在oc4j 10.1.3中使用log4j

我有一个在OC4J 10.1.3上运行的Web应用程序。 我正在尝试使用log4j进行一些日志记录。 消息按预期显示在我的IDE控制台中,但OC4J中的application.log没有任何内容。 有人知道我需要做些什么才能使这个工作?

这是我的log4j.properties:

log4j.rootCategory=DEBUG, CON1 # CON1 is set to be ConsoleAppender sending its output to System.out log4j.appender.CON1=org.apache.log4j.ConsoleAppender log4j.appender.CON1.layout=org.apache.log4j.PatternLayout log4j.appender.CON1.layout.ConversionPattern=%p: [%l] - %m%n log4j.logger.org.apache.ojb.broker.accesslayer=DEBUG 

在我的java类中我正在这样做:

 Logger logger = Logger.getLogger(getClass().getName()); logger.debug("Test message."); 

配置OC4J以将控制台输出记录到文件中。
如果您使用完整的IAS,请将此添加到opmn.xml

  

如果您使用的是stanalone OC4j:

  java -jar oc4j.jar -err err.log -out out.log 

OC4J开发人员指南说明了如何在OC4J中使用log4j 。

具体来说,log4.properties应放在WEB-INF / classes中,可以通过log4j运行时jar(通常放在WEB-INF / lib中)找到它。 将log4j工件放在applib目录中是不好的做法,应该避免使用。

我不确定这一点,但是如果log4j没有写入application.log,那么你必须检查ODL日志的内容( 开发人员指南中提供了ODL配置的一些细节),如果OC4J由OPMN管理它检查opmn / logs目录中的托管进程控制台日志也是一个好主意。

我知道这是一个老问题,但我今天早些时候对此进行了一些额外的研究。

事实certificate,OC4J包含一个用于Log4j的OracleAppender 。 这是log4j.properties中的示例配置:

 log4j.appender.OJDL=oracle.core.ojdl.log4j.OracleAppender log4j.appender.OJDL.LogDirectory=${oracle.j2ee.home}/log/oc4j #log4j.appender.APP1.MaxSize=1000000 #log4j.appender.APP1.MaxSegmentSize=200000 #log4j.appender.APP1.Encoding=iso-8859-1 log4j.appender.OJDL.ComponentId=OracleProd 

此配置将log4j消息定向到ORACLE_HOME / j2ee / home / log / oc4j / log.xml文件,LogViewer将其读取,然后在Application Server Control中显示为诊断日志。

然后可以在某个级别将其添加为记录器。 例如,除了登录到控制台之外,还要将其添加到根记录器:

 log4j.rootLogger=DEBUG, CON1, OJDL 

注意:我不确定rootLoggerrootCategory之间的rootCategory

注意2:这显示在诊断日志而不是应用程序日志中。