多个log4j实例配置

我想使用log4j Logger的多个实例。 我需要将不同的Properties对象附加到每个log4j Logger实例。

以下是为一个实例配置的代码:

LOG4J = org.apache.log4j.Logger.getLogger(Logger.class); Properties log4jProps = new Properties(); ... PropertyConfigurator.configure(log4jProps); 

如果我想要两个log4j实例并且每个实例都有不同的属性怎么办?

你能解释为什么你想要更详细的多个记录器吗? 我认为不可能有多个log4j实例。

如果你只想要多个appender,请看这里:

这是上面链接中的log4j.properties:

 # logj4.properties log4j.rootCategory = WARN, A log4j.category.com.lewscanon = WARN, F log4j.category.com.lewscanon.mouser = DEBUG, X log4j.appender.A = org.apache.log4j.ConsoleAppender log4j.appender.A.layout = org.apache.log4j.PatternLayout log4j.appender.F = org.apache.log4j.RollingFileAppender log4j.appender.F.layout = org.apache.log4j.PatternLayout log4j.appender.F.File = /projects/mouser/logs/lewscanon.log log4j.appender.F.MaxFileSize = 512KB log4j.appender.F.MaxBackupIndex = 2 log4j.appender.X = org.apache.log4j.RollingFileAppender log4j.appender.X.layout = org.apache.log4j.PatternLayout log4j.appender.X.File = /projects/mouser/logs/mouser.log log4j.appender.X.MaxFileSize = 512KB log4j.appender.X.MaxBackupIndex = 2 log4j.appender.A.layout.ConversionPattern= %d %-16c{1}:%-39m %-t %x%n log4j.appender.F.layout.ConversionPattern= %d %-16c{1}:%-39m %-t %x%n log4j.appender.X.layout.ConversionPattern= %d %-16c{1}:%-39m %-t %x%n 

这些线:

 log4j.rootCategory = WARN, A log4j.category.com.lewscanon = WARN, F log4j.category.com.lewscanon.mouser = DEBUG, X 

说以下内容:

  • 将所有内容记录到appender A(这是控制台)。 仅记录警告及以上
  • 记录从com.lewscanon包到appender F(转到文件lewscanon.log)的所有内容。 仅记录警告及以上
  • 记录从com.lewscannon.mouser包到appender X(转到文件mouser.log)的所有内容。 仅记录调试及以上

它也可以提供完整的类名:

 log4j.category.com.lewscanon.SomeClass = WARN, F 

表示记录从com.lewscanon.SomeClass类到appender F,级别警告及以上的所有内容。

我认为上面的内容足够精细,但是如果你绝对需要它更精细(虽然我认为这不够实用),每个:

Logger.getLogger(String name)接受名称。 所以你可以这样做:

 log4j.category.myFancyLogger = INFO, F 

并使用Logger.getLogger("myFancyLogger")获取使用级别信息记录到appender F的记录器。