次の方法で、選択したパッケージ (MyPck および MyPck1) から選択したファイルに INFO および DEBUG ログ レベル情報を記録できるシステムをセットアップする必要があります。
MyPck DEBUG goes to logFile
MyPck1 INFO goes to logFile
MyPck INFO goes to debugLogFile
MyPck1 DEBUG goes to debugLogFile
Log4j.properties の行でこれを実行しようとしています。
log4j.logger.MyPck=DEBUG,logFile
log4j.logger.MyPck1=INFO,logFile
log4j.logger.MyPck=INFO,debugLogFile
log4j.logger.MyPck1=DEBUG,debugLogFile
残念ながら、debugLogFile は情報を取得し、logFile は空のままです。場合によっては、順序に従って log4j.properties の行を変更すると、最初に debugLogFile、次に logFile の debugLogFile が空になります。この問題を解決するには?
Log4J.properties 設定全体:
log4j.rootLogger=TRACE, defaultFile
log4j.appender.defaultFile=org.apache.log4j.RollingFileAppender
log4j.appender.defaultFile.File=defaultFile.log
log4j.appender.defaultFile.Threshold=ALL
log4j.appender.defaultFile.MaxFileSize=100MB
log4j.appender.defaultFile.MaxBackupIndex=4
log4j.appender.defaultFile.layout=org.apache.log4j.PatternLayout
log4j.appender.defaultFile.layout.ConversionPattern=%d %-4r [%t] %-5p %c %x - %m%n
log4j.appender.defaultFile.Append=false
log4j.appender.logFile=org.apache.log4j.RollingFileAppender
log4j.appender.logFile.File=logFile.log
log4j.appender.logFile.Threshold=ALL
log4j.appender.logFile.MaxFileSize=100MB
log4j.appender.logFile.MaxBackupIndex=4
log4j.appender.logFile.layout=org.apache.log4j.PatternLayout
log4j.appender.logFile.layout.ConversionPattern=%d %-4r [%t] %-5p %c %x - %m%n
log4j.appender.logFile.Append=false
log4j.appender.debugLogFile=org.apache.log4j.RollingFileAppender
log4j.appender.debugLogFile.File=debugLogFile.log
log4j.appender.debugLogFile.Threshold=ALL
log4j.appender.debugLogFile.MaxFileSize=100MB
log4j.appender.debugLogFile.MaxBackupIndex=4
log4j.appender.debugLogFile.layout=org.apache.log4j.PatternLayout
log4j.appender.debugLogFile.layout.ConversionPattern=%d %-4r [%t] %-5p %c %x - %m%n
log4j.appender.debugLogFile.Append=false
log4j.logger.MyPck=DEBUG,logFile
log4j.logger.MyPck1=INFO,logFile
log4j.logger.MyPck=INFO,debugLogFile
log4j.logger.MyPck1=DEBUG,debugLogFile
log4j.additivity.MyPck=false
log4j.additivity.MyPck1=false
ソースコード:
メインクラス:
package tst_log4j;
import org.apache.log4j.Logger;
import MyPck.C;
import MyPck1.C1;
public class Tst_Log4J
{
public final Logger log = Logger.getLogger(getClass());
public static void main(String[] args)
{
C c = new C();
c.doLog();
C1 c1 = new C1();
c1.doLog();
}
}
MyPck クラス:
package MyPck;
import org.apache.log4j.Logger;
public class C {
public final Logger log = Logger.getLogger(getClass());
public void doLog()
{
log.info("aaa");
log.debug("bbb");
log.error("ccc");
}
}
MyPck1 クラス:
package MyPck1;
import org.apache.log4j.Logger;
public class C1 {
public final Logger log = Logger.getLogger(getClass());
public void doLog()
{
log.info("aaa");
log.debug("bbb");
log.error("ccc");
}
}