2013-02-13 65 views
2

我想將文件記錄到我的應用程序。
我爲此嘗試Appach log4j。在Java代碼中,我說:如何進行簡單的log4j配置?

 Logger log = Logger.getLogger(uploadfile.class); 
     log.debug("Start"); 

創建文件src\log4j.properties有:

# ***** Set root logger level to DEBUG and its only appender to A. 
log4j.rootLogger=DEBUG, R, A 
log4j.rootLogger=INFO, A 

log4j.appender.R=org.apache.log4j.RollingFileAppender 
log4j.appender.R.MaxFileSize=100mb 
log4j.appender.R.MaxBackupIndex=1000 
log4j.appender.R.File=c:/uploaded_files/server.log 
log4j.appender.R.layout=org.apache.log4j.PatternLayout 
log4j.appender.R.layout.ConversionPattern=%d [%t] %-5p %c - %m%n 


# ***** A is set to be a ConsoleAppender. 
log4j.appender.A=org.apache.log4j.ConsoleAppender 
# ***** A uses PatternLayout. 
log4j.appender.A.Threshold=INFO 
log4j.appender.A.layout=org.apache.log4j.PatternLayout 
log4j.appender.A.layout.ConversionPattern=%d [%t] %-5p %c - %m%n 

log4j.logger.org.hibernate.type.BasicTypeRegistry=INFO 
log4j.logger.com.opensymphony.xwork2.config.providers.XmlConfigurationProvider=INFO 

我複製此there。我得到的錯誤:

13.02.2013 9:03:34 org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [uploadfile] in context with path [/gis-mrsk-portlet] threw exception [Servlet execution threw an exception] with root cause 
java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.LogManager 
at org.apache.log4j.Logger.getLogger(Logger.java:117) 
at test.uploadfile.doPost(uploadfile.java:35) 

我做錯了什麼?以及如何配置log4j的簡單?

UPDATE

如果我使用這個配置我得到日誌文件,但其空:

Set root category priority to INFO and its only appender to CONSOLE. 
log4j.rootCategory=INFO, CONSOLE, LOGFILE 

Set the enterprise logger priority to FATAL 
log4j.logger.org.apache.axis2.enterprise=FATAL 
log4j.logger.de.hunsicker.jalopy.io=FATAL 
log4j.logger.httpclient.wire.header=FATAL 
log4j.logger.org.apache.commons.httpclient=FATAL 

CONSOLE is set to be a ConsoleAppender using a PatternLayout. 
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 
log4j.appender.CONSOLE.layout.ConversionPattern=[%p] %m%n 

LOGFILE is set to be a File appender using a PatternLayout. 
log4j.appender.LOGFILE=org.apache.log4j.FileAppender 
log4j.appender.LOGFILE.File=C:/uploaded_files/LogFile.log 
log4j.appender.LOGFILE.Append=true 
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout 
log4j.appender.LOGFILE.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n 

回答

1

這似乎是正確的..你有沒有在你的路徑正確設置log4j庫?

+0

你對我的配置有什麼看法?使用它我會得到什麼日誌? – 2013-02-13 09:20:35

+0

嘗試刪除log4j.rootLogger = INFO,A.通過此配置,您將在控制檯上(如果您在eclipse中運行應用程序)和指定文件中擁有調試,信息和錯誤日誌。 – Vargan 2013-02-13 09:26:03

+0

我更新問題。請看看它。 – 2013-02-13 09:33:35

0

java.lang.NoClassDefFoundError

它看起來像你的Apache不知道的org.apache.log4j.LogManager定義。你有沒有在Apache classpath中放置所需的jar?

+0

是的,我在項目庫中看到log4j.jar。 – 2013-02-13 09:28:32

1

問題不在於你的配置,問題是不支持log4j for catalina讓它不應該如此一致地工作,因爲它應該是。要使log4j與catalina一起工作,請按照http://tomcat.apache.org/tomcat-6.0-doc/logging.html#Using_Log4j處提供的文檔。

編輯

總結我給的鏈接:

  1. [...]把log4j.jar和log4j.properties到WEB-INF/lib和WEB-INF/classes目錄您的網絡應用程序。

  2. 下載或構建tomcat-juli.jar和tomcat-juli-adapters.jar,這些作爲Tomcat的「extras」組件提供。詳細信息請參閱其他組件文檔。 http://tomcat.apache.org/tomcat-6.0-doc/extras.html

遵循這些步驟後,您的示例應該已經可以工作。

/EDIT

如果你想在日誌比較容易的部分我會建議使用其自帶的基於Tomcat應用原生支持servlet的logback。如果你想更進一步記錄:clusterlog.net(完全公開我自己的公司部分)

+0

我不能從這個網站得到log4j的例子(。 – 2013-02-13 09:34:32

+0

我剛剛添加了相關的段落從我的答案。 – 2013-02-13 09:45:24

+0

謝謝,我會試試看) – 2013-02-13 10:02:25