2009-08-27 54 views
1

我有一個運行在OC4J 10.1.3上的web應用程序。我正在嘗試使用log4j進行一些日誌記錄。這些消息按照預期在我的IDE控制檯中顯示,但OC4J中的application.log沒有任何內容。任何人都知道我需要做些什麼才能做到這一點?在oc4j中使用log4j 10.1.3

這裏是我的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

其中是log4j.properties? – skaffman 2009-08-27 14:52:17

+0

在我的項目源代碼樹的根目錄下,默認包。 – 2009-08-27 14:56:44

回答

2

配置OC4J控制檯輸出記錄到文件中。
如果您使用的是全IAS添加這爲opmn.xml

<data id="oc4j-options" value="-verbosity 10 -err err.log -out out.log"/> 

如果您使用的是stanalone OC4J:

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

The OC4J Developer's Guide states how log4j is to be used in OC4J

具體說來,log4.properties應該放在WEB-INF /類中,它可以通過log4j運行時jar(通常放在WEB-INF/lib中)來定位。將log4j工件放在applib目錄中是不好的做法,應該避免。

我不確定這一點,但如果log4j沒有寫入application.log,那麼您必須檢查ODL日誌的內容(ODL配置的一些詳細信息可在Developer's Guide中找到),並且如果OC4J被管理通過OPMN,檢查opmn/logs目錄中的託管進程控制檯日誌也是一個好主意。

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 /家庭/日誌/ OC4J/log.xml文件,該文件LogViewer的讀取和然後在Application Server Control中顯示爲診斷日誌。

然後這可以作爲記錄器添加在某個級別。例如,除了它添加到根記錄器記錄到控制檯:

log4j.rootLogger=DEBUG, CON1, OJDL 

注:我不知道有什麼區別rootLoggerrootCategory之間。

注2:這顯示在診斷日誌中而不是應用程序日誌中。