2010-11-25 118 views
0

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

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

LOG4J = org.apache.log4j.Logger.getLogger(Logger.class); 

Properties log4jProps = new Properties(); 

... 

PropertyConfigurator.configure(log4jProps); 

如果我想有两个log4j的实例,他们每个人都有不同的属性?

回答

7

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

如果你只是想多个附加目的地,看看这里:

这里是从上面的链接中的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楼级警告及以上。

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

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

log4j.category.myFancyLogger = INFO, F 

,并使用Logger.getLogger("myFancyLogger")来获取记录到追加程序f控制级别信息的记录器。

+0

我看着你的链接。但是,我怎样才能来回更改日志位置?我的意思是我想使用一个log4j实例,然后以某种方法登录到一个文件,同时以其他方法登录到另一个文件。任何示例? – Kavin 2010-11-25 02:34:48