- - PR -
Log4j
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2003-05-08 11:30
現在、Log4jでファイルにログ出力をしているのですが、設定ファイルでログ出力レベルを"DEBUG"にするとapache.commonsでデフォルト設定されているDEBUGまで出力されて
しまい、ログの量が膨大になってしまいます。 commonsのログを出力させない方法はあるのでしょうか? 今はしょうがなくレベルを"INFO"に設定してログ出力している状況です。 参考までに下記に設定ファイルをコピーします。 # sampleCategory log4j.rootLogger=INFO, stdout,A2 log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern = %d [%t] [%l] %-5p - [%m]%n # APPENDER A2 log4j.appender.A2 = org.apache.log4j.DailyRollingFileAppender log4j.appender.A2.File = c:/eclipse/workspace/TEST/WEB-INF/Logs/Info.log log4j.appender.A2.DatePattern = '.'yyyy-MM-dd log4j.appender.A2.layout = org.apache.log4j.PatternLayout log4j.appender.A2.layout.ConversionPattern = %d [%t] [%l] %-5p - [%m]%n また、複数のファイルに違うログ出力レベルでファイル出力することは 可能なんでしょうか? 例) A.log ⇒ レベルINFOのものだけ B.log ⇒ レベルDEBUGのものだけ ご教授宜しくお願い致します。 | ||||
|
投稿日時: 2003-05-08 11:54
どうして自分で調べないのでしょうか?
[url]http://www.ingrid.org/jajakarta/log4j/jakarta-log4j-1.1.3/docs-ja/manual.html[url]
基本機能です。 | ||||
|
投稿日時: 2003-05-08 12:24
返答ありがとうございます。
質問の仕方が悪かったです。 ># パッケージ com.foo上で、優先度WARNのメッセージだけ出力します。 >log4j.category.com.foo=WARN 上記のやり方はすでに試していて、以下のような設定ファイルにしています。 # sampleCategory log4j.rootLogger=INFO, stdout,A2,UserLog log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern = %d [%t] [%l] %-5p - [%m]%n # APPENDER A2 log4j.appender.A2 = org.apache.log4j.DailyRollingFileAppender log4j.appender.A2.File = c:/eclipse/workspace/TEST/WEB-INF/Logs/Info.log log4j.appender.A2.DatePattern = '.'yyyy-MM-dd log4j.appender.A2.layout = org.apache.log4j.PatternLayout log4j.appender.A2.layout.ConversionPattern = %d [%t] [%l] %-5p - [%m]%n # APPENDER UserLog log4j.appender.UserLog = org.apache.log4j.DailyRollingFileAppender log4j.appender.UserLog.File = c:/eclipse/workspace/TEST/WEB-INF/Logs/Users.log log4j.appender.UserLog.DatePattern = '.'yyyy-MM-dd log4j.appender.UserLog.layout = org.apache.log4j.PatternLayout log4j.appender.UserLog.layout.ConversionPattern = %d %-5p - [%m]%n log4j.category.base.RecordUserLog=DEBUG ただし、このやり方だとUsers.logにもInfo.logにもDEBUGが出力されてしまいます。 (DEBUGのレベルがINFO以下だから) よって、rootLoggerをDEBUGにして、categoryをINFOに変更すればよいと思うのですが rootLoggerをDEBUGにするとcommonsのLogが膨大に出力されてしまう為、レベルを DEBUGにすることができません。 commonsのINFOログを出力しない方法を教えて頂けませんでしょうか? | ||||
|
投稿日時: 2003-05-08 13:32
おっしゃっている意味がわかりませんが・・
DEBUG < INFO < WARN < ERROR < FATAL。 ですから、ルートカテゴリにINFOと指定しているならINFO以上のログしか出ないはずです。 プロパティファイルがきちんと適用されていなんじゃないですか? log4j.propertiesはスタティッククラスパス(クラスローダー)で参照されるので、 JVMを一度停止してからファイルを置き換えてJVMを起動することをお勧めします。 | ||||
|
投稿日時: 2003-05-08 13:43
もしかして・・
log4j.rootLogger=INFO, stdout,A2 ... log4j.category.base.RecordUserLog=DEBUG, UserLog ってこと? | ||||
|
投稿日時: 2003-05-09 13:32
apache.commonsのDEBUGログは、以下のようにカテゴリを
指定することで出力されなくなりました。 log4j.category.org.apache.commons=WARN 勉強不足でした。 申し訳ありません。 | ||||
|
投稿日時: 2003-05-09 14:07
上記のやり方でレベル毎に出力先を振り分けることができました。 ありがとうございました。 | ||||
1
