我在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.");
答案 0 :(得分:2)
配置OC4J以将控制台输出记录到文件中 如果您使用完整的IAS,请将其添加到opmn.xml
<data id="oc4j-options" value="-verbosity 10 -err err.log -out out.log"/>
如果您使用的是独立式OC4j:
java -jar oc4j.jar -err err.log -out out.log
答案 1 :(得分:2)
The OC4J Developer's Guide states how log4j is to be used in OC4J
具体来说,log4.properties应放在WEB-INF / classes中,可以通过log4j运行时jar(通常放在WEB-INF / lib中)找到它。将log4j工件放在 applib 目录中是不好的做法,应该避免使用。
我不确定这一点,但是如果log4j没有写入application.log,那么你必须检查ODL日志的内容(ODL配置的一些细节在Developer's Guide中可用),如果OC4J由OPMN管理,检查opmn / logs目录中的托管进程控制台日志也是一个好主意。
答案 2 :(得分:1)
我知道这是一个老问题,但我今天早些时候对此进行了一些额外的研究。
事实证明,OC4J包含OracleAppender
for Log4j。这是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
注意:我不确定rootLogger
和rootCategory
之间的区别。
注意2:这显示在诊断日志而不是应用程序日志中。