- PR -

Log4j

1
投稿者投稿内容
tada
会議室デビュー日: 2003/05/08
投稿数: 12
投稿日時: 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のものだけ

ご教授宜しくお願い致します。
zaxx_MD
大ベテラン
会議室デビュー日: 2003/04/21
投稿数: 204
お住まい・勤務地: 千葉県柏市
投稿日時: 2003-05-08 11:54
どうして自分で調べないのでしょうか?

[url]http://www.ingrid.org/jajakarta/log4j/jakarta-log4j-1.1.3/docs-ja/manual.html[url]

引用:

# パッケージ com.foo上で、優先度WARNのメッセージだけ出力します。
log4j.category.com.foo=WARN



基本機能です。
tada
会議室デビュー日: 2003/05/08
投稿数: 12
投稿日時: 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ログを出力しない方法を教えて頂けませんでしょうか?
zaxx_MD
大ベテラン
会議室デビュー日: 2003/04/21
投稿数: 204
お住まい・勤務地: 千葉県柏市
投稿日時: 2003-05-08 13:32
おっしゃっている意味がわかりませんが・・
引用:

ただし、このやり方だとUsers.logにもInfo.logにもDEBUGが出力されてしまいます。
(DEBUGのレベルがINFO以下だから)


DEBUG < INFO < WARN < ERROR < FATAL。
ですから、ルートカテゴリにINFOと指定しているならINFO以上のログしか出ないはずです。
プロパティファイルがきちんと適用されていなんじゃないですか?
log4j.propertiesはスタティッククラスパス(クラスローダー)で参照されるので、
JVMを一度停止してからファイルを置き換えてJVMを起動することをお勧めします。
zaxx_MD
大ベテラン
会議室デビュー日: 2003/04/21
投稿数: 204
お住まい・勤務地: 千葉県柏市
投稿日時: 2003-05-08 13:43
もしかして・・

log4j.rootLogger=INFO, stdout,A2
...
log4j.category.base.RecordUserLog=DEBUG, UserLog

ってこと?
tada
会議室デビュー日: 2003/05/08
投稿数: 12
投稿日時: 2003-05-09 13:32
apache.commonsのDEBUGログは、以下のようにカテゴリを
指定することで出力されなくなりました。

log4j.category.org.apache.commons=WARN

勉強不足でした。
申し訳ありません。
tada
会議室デビュー日: 2003/05/08
投稿数: 12
投稿日時: 2003-05-09 14:07
引用:

zaxx_MDさんの書き込み (2003-05-08 13:43) より:
もしかして・・

log4j.rootLogger=INFO, stdout,A2
...
log4j.category.base.RecordUserLog=DEBUG, UserLog

ってこと?



上記のやり方でレベル毎に出力先を振り分けることができました。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)