4

log4j の設定に問題があります。

Maven はアプリケーションを war-file にパッケージ化する前に、テストを実行します。また、log4j 構成がロードされて使用されます。ログ ファイルが作成され、ログ ファイルとコンソールにメッセージが書き込まれます。

コンソールに log4j デバッグ出力があります。

log4j: Trying to find [log4j.xml] using context classloader sun.misc.Launcher$AppClassLoader@422ede.
log4j: Trying to find [log4j.xml] using sun.misc.Launcher$AppClassLoader@422ede class loader.
log4j: Trying to find [log4j.xml] using ClassLoader.getSystemResource().
log4j: Trying to find [log4j.properties] using context classloader sun.misc.Launcher$AppClassLoader@422ede.
log4j: Using URL [file:/C:/dev/workspace/paymentsystemsstub/target/classes/log4j.properties] for automatic log4j configuration.
log4j: Reading configuration from URL file:/C:/dev/workspace/paymentsystemsstub/target/classes/log4j.properties
log4j: Parsing for [root] with value=[WARN, file, stdout].
log4j: Level token is [WARN].
log4j: Category root set to WARN
log4j: Parsing appender named "file".
log4j: Parsing layout options for "file".
log4j: Setting property [conversionPattern] to [%d{dd MMM yyyy HH:mm:ss,SSS} [%c] [%-5p] %n%m%n].
log4j: End of parsing for "file".
log4j: Setting property [file] to [C:\tomcat\log/paymentSystemsStub.log].
log4j: Setting property [maxBackupIndex] to [1].
log4j: Setting property [maxFileSize] to [1MB].
log4j: setFile called: C:\tomcat\log/paymentSystemsStub.log, true
log4j: setFile ended
log4j: Parsed "file" options.
log4j: Parsing appender named "stdout".
log4j: Parsing layout options for "stdout".
log4j: Setting property [conversionPattern] to [%d{HH:mm:ss,SSS} [%c] [%-5p] %n%m%n].
log4j: End of parsing for "stdout".
log4j: Parsed "stdout" options.
log4j: Parsing for [com.panbet.paymentstub] with value=[DEBUG].
log4j: Level token is [DEBUG].
log4j: Category com.panbet.paymentstub set to DEBUG
log4j: Handling log4j.additivity.com.panbet.paymentstub=[null]
log4j: Finished configuring.

しかし、Tomcat で生成された war ファイルを展開すると、log4j 構成が読み込まれ、ログ ファイルが作成されますが、ログ ファイルまたはコンソールにメッセージが書き込まれません。

log4j デバッグ出力があります。

log4j: Trying to find [log4j.xml] using context classloader WebappClassLoader
  context: /paymentstub
  delegate: false
  repositories:
    /WEB-INF/classes/
----------> Parent Classloader:
org.apache.catalina.loader.StandardClassLoader@d1ad08
.
log4j: Trying to find [log4j.xml] using WebappClassLoader
  context: /paymentstub
  delegate: false
  repositories:
    /WEB-INF/classes/
----------> Parent Classloader:
org.apache.catalina.loader.StandardClassLoader@d1ad08
 class loader.
log4j: Trying to find [log4j.xml] using ClassLoader.getSystemResource().
log4j: Trying to find [log4j.properties] using context classloader WebappClassLoader
  context: /paymentstub
  delegate: false
  repositories:
    /WEB-INF/classes/
----------> Parent Classloader:
org.apache.catalina.loader.StandardClassLoader@d1ad08
.
log4j: Using URL [file:/C:/tomcat/webapps/paymentstub/WEB-INF/classes/log4j.properties] for automatic log4j configuration.
log4j: Reading configuration from URL file:/C:/tomcat/webapps/paymentstub/WEB-INF/classes/log4j.properties
log4j: Parsing for [root] with value=[WARN, file, stdout].
log4j: Level token is [WARN].
log4j: Category root set to WARN
log4j: Parsing appender named "file".
log4j: Parsing layout options for "file".
log4j: Setting property [conversionPattern] to [%d{dd MMM yyyy HH:mm:ss,SSS} [%c] [%-5p] %n%m%n].
log4j: End of parsing for "file".
log4j: Setting property [file] to [C:\tomcat\log/paymentSystemsStub.log].
log4j: Setting property [maxBackupIndex] to [1].
log4j: Setting property [maxFileSize] to [1MB].
log4j: setFile called: C:\tomcat\log/paymentSystemsStub.log, true
log4j: setFile ended
log4j: Parsed "file" options.
log4j: Parsing appender named "stdout".
log4j: Parsing layout options for "stdout".
log4j: Setting property [conversionPattern] to [%d{HH:mm:ss,SSS} [%c] [%-5p] %n%m%n].
log4j: End of parsing for "stdout".
log4j: Parsed "stdout" options.
log4j: Parsing for [com.panbet.paymentstub] with value=[DEBUG].
log4j: Level token is [DEBUG].
log4j: Category com.panbet.paymentstub set to DEBUG
log4j: Handling log4j.additivity.com.panbet.paymentstub=[null]
log4j: Finished configuring.

log4j.propertiesフォルダー内WEB-INF\classeslog4j-1.2.17.jarフォルダー内にファイルがありますWEB-INF\libここここから、そこにあるはずです)。

ログ ファイルを作成する絶対パスを JVM プロパティとして渡します。

私のlog4j.propertiesファイルがあります:

# Set root logger level to WARN and its appenders to file and stdout
log4j.rootLogger=WARN, file, stdout

# stdout is set to be a ConsoleAppender
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
# stdout uses PatternLayout
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{HH:mm:ss,SSS} [%c] [%-5p] %n%m%n

# file is set to be a RollingFileAppender
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=${stubLog}/paymentSystemsStub.log
log4j.appender.file.MaxFileSize=1MB
# Keep one backup file
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss,SSS} [%c] [%-5p] %n%m%n

# Print only messages of level DEBUG or above in the package com.panbet.paymentstub
log4j.logger.com.panbet.paymentstub=DEBUG

Windows 7、Eclipse、Tomcat 7、Maven、および Log4j 1.2 を使用しています。

私は一日中何が悪いのかを見つけようとしていますが、まだわかりません。

アップデート

私はとても混乱しています!結局のところ、私が呼び出したメソッドは何もログに記録しません! 私は彼らがそうしていると確信していました..

4

3 に答える 3

2

Tomcat を log4j で動作させる手順

  • tomcat ダウンロード セクションのエクストラから 2 つのファイルをダウンロードします

    tomcat-juli.jar tomcat-juli-adapters.jar

  • tomcat-juli.jar を $CATALINA_HOME\bin にコピーして古いものと置き換えます
  • tomcat-juli-adapters.jar を $CATALINA_HOME\lib にコピーします。
  • log4j lib をダウンロードして、$CATALINA_HOME\libs にコピーします。
  • $CATALINA_HOME\conf の logging.properties を削除します
  • $CATALINA_HOME\libs に log4j.properties を作成します。
  • 1.2 以上のバージョンの log4j をダウンロードし、$CATALINA_HOME\lib にコピーします。

その後、Tomcat を再起動します。

于 2014-04-16T22:11:14.697 に答える
-1

これをEclipseのTomcatランチャーにJVMパラメーターとして追加してみてください

-Dlog4j.rootLevel="ERROR" -Dlog4j.rootAppender="console"
于 2013-11-14T17:14:03.583 に答える