1

最初に、この質問がすでに出されていたら申し訳ありません。検索しましたが、私の問題に固有のものは見つかりませんでした。

シナリオは次のとおりです。たとえば、Tomcat 6.0.35 で MyFirstWebApp というアプリケーションをデプロイしています。Tomcat の共​​通ローダー パスには、次のような log4j.properties があります。

log4j.rootLogger=INFO, LOGFILE

log4j.logger.com.test.java=DEBUG, TEST
log4j.additivity.com.test.java=false

# 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.RollingFileAppender
log4j.appender.LOGFILE.File=/home/myuserid/tomcat.log
log4j.appender.LOGFILE.MaxFileSize=25MB
log4j.appender.LOGFILE.MaxBackupIndex=5
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d %p %t %c - %m%n

# LOGFILE is set to be a File appender using a PatternLayout
log4j.appender.TEST=org.apache.log4j.FileAppender
log4j.appender.TEST.File=/home/myuserid/test.log
log4j.appender.TEST.layout=org.apache.log4j.PatternLayout
log4j.appender.TEST.layout.ConversionPattern=%d %p %t %c - %m%n

Tomcat の lib/ ディレクトリには log4j.jar ファイルもあります。

現在、MyFirstWebApp の WEB-INF/classes ディレクトリ内に log4j.properties があります。MyFirstWebApp の WEB-INF/lib ディレクトリには log4j.jar もあります。

MyFirstWebApp log4j.properties は次のようになります -

log4j.rootCategory=INFO,LOGFILE

# Set the enterprise logger priority to FATAL
log4j.logger.com.test=INFO

# 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.RollingFileAppender
log4j.appender.LOGFILE.MaxFileSize=10MB
log4j.appender.LOGFILE.MaxBackupIndex=99
log4j.appender.LOGFILE.File=/home/myuserid/mywebapp.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

サーバーを起動してこのアプリケーションをデプロイすると、tomcat.log、test.log、mywebapp.log の 3 つのログ ファイルが見つかるはずでした (実際に実行しました)。また、「test.log」内の「com.test.java」パッケージからのすべてのログを見つけることを期待していましたが、それらは「mywebapp.log」で見つかりました

ここで何が間違っていますか?MyFirstWebApp を変更せずに "com.test.java" からのメッセージをログに記録するにはどうすればよいですか?

4

1 に答える 1

1

log4j.properties ファイルは、クラスローダーによってロードされます。webapp のすべてのクラスは webapp のクラスローダーを使用するため、.log の下にある log4j.properties ファイルのみが表示されWEB-INF/classesます。com.test.javaしたがって、 webapp のクラスによって生成されるログは、にある構成を使用しますWEB-INF/classes/log4j.properties。したがって、それらはに書き込まれmywebapp.logます。

ログcom.test.javaを test.log に保存したい場合は、webapp の log4j.properties を変更する (正しい解決策) か、これらのクラスを webapp から直接 tomcat のクラスパスに配置する必要があります (ただし、そうしないでください)。これ)。

于 2012-09-28T21:16:07.537 に答える