1

我有一个在 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.");
4

3 回答 3

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
于 2009-08-27T21:10:31.640 回答
2

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

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

我不确定这一点,但如果 log4j 没有写入 application.log,那么您必须检查 ODL 日志的内容(ODL 配置的一些详细信息可在Developer's Guide中找到),如果 OC4J 由 OPMN 管理,它检查 opmn/logs 目录中的托管进程控制台日志也是一个好主意。

于 2009-09-12T12:09:15.010 回答
1

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

事实证明 OC4J 包含一个OracleAppenderfor 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:这显示在诊断日志而不是应用程序日志中。

于 2011-08-30T17:50:26.150 回答