2010-11-22 10 views
5

同じクラス内で生成された特定のメッセージを別々に記録したい。したがって、同じクラス内で2種類のロガーを作成するにはどうすればよいですか。 /**ロガー - :現在、プロパティファイルには、私のように私のコードでは、ロギングを使用していLog4Jを使用する同じクラスの別のLogger

log4j.rootCategory=DEBUG, O 

# Stdout 
log4j.appender.O=org.apache.log4j.ConsoleAppender 
log4j.appender.O.layout=org.apache.log4j.PatternLayout 
log4j.appender.O.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n 

# File 
log4j.appender.MESSAGE=org.apache.log4j.RollingFileAppender 
log4j.appender.MESSAGE.File=target/logs/messages.log 
# Control the maximum log file size 
log4j.appender.MESSAGE.MaxFileSize=1000KB 
# Archive log files (one backup file here) 
log4j.appender.MESSAGE.MaxBackupIndex=100 
log4j.appender.MESSAGE.layout=org.apache.log4j.PatternLayout 
log4j.appender.MESSAGE.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M   (%  F:% L) - %m%n 
log4j.appender.MESSAGE. 

log4j.category.failedMessagesLog=INFO, MESSAGE 

のように見えます。テスト時*/

Logger logger = Logger.getLogger(MyClass.class); 
Logger msgLogger = Logger.getLogger("MESSAGE"); 

、私が作成した空のログファイル(はmessages.log)を取得します。 提案がありますか?

答えて

1
log4j.rootCategory=DEBUG, O 

log4j.appender.O=org.apache.log4j.ConsoleAppender 
log4j.appender.O.layout=org.apache.log4j.PatternLayout 
log4j.appender.O.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n 

log4j.appender.MESSAGE=org.apache.log4j.RollingFileAppender 
log4j.appender.MESSAGE.File=target/logs/messages.log 
log4j.appender.MESSAGE.MaxFileSize=1000KB 
log4j.appender.MESSAGE.MaxBackupIndex=100 
log4j.appender.MESSAGE.layout=org.apache.log4j.PatternLayout 
log4j.appender.MESSAGE.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M 


log4j.appender.**MESSAGE2**=org.apache.log4j.RollingFileAppender 
log4j.appender.**MESSAGE2**.File=target/logs/**messages2**.log 
log4j.appender.**MESSAGE2**.MaxFileSize=1000KB 
log4j.appender.**MESSAGE2**.MaxBackupIndex=100 
log4j.appender.**MESSAGE2**.layout=org.apache.log4j.PatternLayout 
log4j.appender.**MESSAGE2**.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M  

log4j.category.failedMessagesLog=INFO, MESSAGE , **MESSAGE2** 

は "failedMessagesLog" を適用さ(INFO,MESSAGE, MESSAGE1)をアペンダへのJavaファイルです。 私はちょうど既存のRollingFileAppenderを再利用しました。他のアペンダー(fileAppenderなど)を使用することができます。

正しいクラス名を使用する必要があります。クラス名Logger logger = Logger.getLogger(MyClass.class)private static final Logger log = Logger.getLogger(**failedMessagesLog.class**)に変更してください。

あなたは私のように私のコードでログインしていすなわち

import **org.apache.log4j.Logger**; 
7

異なる名前の2つのロガーを作成します。名前ごとに設定できます。 これを行う簡単な方法は、クラス名に接尾辞を追加することです。例えば

Log log1 = LogFactory.getLog(getClass().getName()+".log1"); 
Log log2 = LogFactory.getLog(getClass().getName()+".log2"); 

をプロパティファイルに追加します。

log4j.category.mypackage.myclass.log1=INFO, MESSAGE1 
log4j.category.mypackage.myclass.log2=INFO, MESSAGE2 
+0

のlog4jのロギングを使用していることを確認: –

+0

ロガーfailedMessagelogger = Logger.getLogger(myclass.class)。 –

+0

静的コンテキストでロガーを作成するには、次のようにします。Logger log1 = Logger.getLogger(MyClass.class.getName()+ "。log1"); – Darron

関連する問題