1

ROOT としてデプロイされた 1 つのアプリケーションを使用して、Amazon Linux (バージョン 201303) にクリーンな tomcat 7 をインストールしています。log4j-1.2.17.jar は WEB-INF/lib にあります。以下を含む WEB-INF/classes に log4j.properties ファイルがあります。

log4j.rootLogger=DEBUG,A1, A2

log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.Threshold=DEBUG

log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd}-%t-%x-%-5p-%-10c:%m%n

log4j.appender.A2.File=${catalina.home}/logs/app.log
log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A2.DatePattern='.' yyyy-MM-dd
log4j.appender.A2.MaxFileSize=10MB
log4j.appender.A2.MaxBackupIndex=99
log4j.appender.A2.Append=true

log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS}-%t-%x-%-5p-%-10c:%m%n

アプリでは、log4j がインスタンス化されます

static Logger logger = Logger.getLogger(ClassName.class.getName());

app.log は作成されません。手動で作成すると、書き込まれることはありません。進行中の唯一のログは、logs/catalina.out にあります。私は何が欠けていますか?http://tomcat.apache.org/tomcat-7.0-doc/logging.htmlを何度か読みました。次の抜粋は、私のアプローチを確認しているようです。

独自の Web アプリケーションで log4j を使用するだけの場合、これらの手順は必要ありません。— その場合、log4j.jar と log4j.properties を Web アプリケーションの WEB-INF/lib と WEB-INF/classes に入れるだけです。

catalina_home/lib には log4j.jar と log4j.xml があり、catalina_home/conf には log4j.properties があります。それらは、WAR に含まれる jar と競合する可能性がありますか? catalina.out にエラーはありません。

アップデート

そのため、WEB-INF/classes の log4j.properties がロードされているようです。ConsoleAppender (log4j.appender.A1) を削除すると、ログ メッセージが catalina.out に表示されなくなりました。元に戻すと、ログ メッセージが catalina.out に再表示されました。奇妙なのは、変換パターンがログと一致していないように見えることです。%d{yyyy-MM-dd}-%t-%x-%-5p-%-10c:%m%nのようなものを生成するべきではありません2013-07-10 INFO ClassName Log messageか? 代わりに私は見て14:39:29,180 INFO [ClassName] Log messageいます。

更新 2

私は自分の答えを見つけました。コンテナー レベルで log4j を構成していた ${catalina.home}/lib に log4j.xml がありました。Tomcat で行っていたことを実際に新しいものにしていれば、もっと早く理解できたと思います。lib/log4j.xml の構成を開始すると、期待どおりの結果が得られました。アプリが独自の log4j.properties を使用するのではなく、その構成を継承した理由については、まだ少し混乱しています。まあ、意図した結果が得られたので、先に進みます。

4

2 に答える 2

0

これを試して(ログファイルの物理パスで最初のテスト)、別のバージョンのlog4j jarで試してください

Jar バージョン log4j-1.2.14.jar

log4j.watch=true

log4j.readtime=30000

log4j.rootCategory=DEBUG、applicationlogging log4j.rootCategory=DEBUG、strutslogging log4j.category.applicationlogging = DEBUG、applicationlogging log4j.category.org = DEBUG、strutslogging

log4j.logger.org.apache.commons.httpclient=DEBUG log4j.logger.httpclient.wire.header=オフ log4j.logger.httpclient.wire.content=オフ log4j.additivity.applicationlogging = false log4j.additivity.strutslogging = false log4j .appender.applicationlogging=org.apache.log4j.RollingFileAppender log4j.appender.applicationlogging.File= C:/logs/app.log log4j.appender.applicationlogging.MaxFileSize=3000KB log4j.appender.applicationlogging.MaxBackupIndex=50 log4j.appender. applicationlogging.layout=org.apache.log4j.PatternLayout log4j.appender.applicationlogging.layout.ConversionPattern=%d - %m%n

于 2013-07-10T07:27:34.183 に答える
0

コンテナー レベルで log4j を構成していた ${catalina.home}/lib に log4j.xml がありました。デプロイされているアプリは 1 つだけなので、私のユース ケースでは lib/log4j.xml を使用するとうまくいきます。

于 2013-07-12T16:29:16.513 に答える