2

私は自分のアプリケーションにファイルを記録したいと考えています。
これにはAppach log4jを試します。Javaコードで私は言います:

        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

私はそこにこれをコピーします。そして、私はエラーが発生します:

  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を簡単に設定するにはどうすればよいですか?

アップデート

この構成を使用すると、ログファイルが取得されますが、空です:

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
4

3 に答える 3

1

問題は構成にあるのではなく、問題はcatalina の log4j のサポートが存在しないことです。log4j を catalina で動作させるには、http://tomcat.apache.org/tomcat-6.0-doc/logging.html#Using_Log4jにあるドキュメントに従ってください。

編集

私が与えたリンクを要約すると:

  1. [...] log4j.jar と log4j.properties を Web アプリケーションの WEB-INF/lib と WEB-INF/classes に配置します。

  2. Tomcat の「追加」コンポーネントとして利用できる tomcat-juli.jar および tomcat-juli-adapters.jar をダウンロードまたはビルドします。詳細については、追加コンポーネントのドキュメントを参照してください。http://tomcat.apache.org/tomcat-6.0-doc/extras.html

これらの手順に従った後、例は既に機能しているはずです。

/編集

ロギングの簡単な部分が必要な場合は、Tomcat ベースのアプリケーションのネイティブ サーブレット サポートが付属している logback を使用することをお勧めします。ロギングをさらに一歩進めたい場合: clusterlog.net (完全開示私はその会社の一部を所有しています)

于 2013-02-13T09:19:49.320 に答える
0

java.lang.NoClassDefFoundError

あなたの Apache は の定義を認識していないようですorg.apache.log4j.LogManager。Apache に必要な jar を入れましたclasspathか?

于 2013-02-13T09:11:49.293 に答える