如何将不同的记录器记录到不同的文件中

时间:2014-08-13 07:52:39

标签: java log4j

以下是我在java代码中的内容

private static final Logger SUCCESS = LogManager.getLogger("success");
private static final Logger ERROR = LogManager.getLogger("error");

我需要为这些日志创建2个日志文件。 (我试图遵循Creating multiple log files of different content with log4j),但我认为它不完全一样。但这是我在log4j.properties创建的内容。

log4j.rootLogger=TRACE, SuccessAppender, ErrorAppender

# setup SuccessAppender
log4j.appender.SuccessAppender=org.apache.log4j.RollingFileAppender
log4j.appender.SuccessAppender.Threshold=INFO
log4j.appender.SuccessAppender.File=success.log
log4j.appender.SuccessAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.SuccessAppender.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

# setup ErrorAppender
log4j.appender.ErrorAppender=org.apache.log4j.RollingFileAppender
log4j.appender.ErrorAppender.Threshold=INFO
log4j.appender.ErrorAppender.File=error.log
log4j.appender.ErrorAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.ErrorAppender.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

我想知道如何将这个“成功”日志映射到“SuccessAppender”。

2 个答案:

答案 0 :(得分:2)

首先,您必须确保RootLogger没有记录任何内容。这可以通过不同的方式实现,但我的第一个解决方案是将其附加到NullAppender

log4j.rootLogger=OFF, NullAppender

# setup NullAppender
log4j.appender.NullAppender=org.apache.log4j.varia.NullAppender

然后,您必须为记录器设置日志级别和追加器(successerror):

log4j.logger.success = TRACE, SuccessAppender
log4j.logger.error = TRACE, ErrorAppender

您的log4j.properties的其余部分保持不变。


如果您不想使用NullAppender,另一种解决方案是在记录器上设置可加性标志:

log4j.rootLogger=OFF, SuccessAppender, ErrorAppender

log4j.logger.success = TRACE, SuccessAppender
log4j.additivity.success = false
log4j.logger.error = TRACE, ErrorAppender
log4j.additivity.error = false

有关可加性的更多信息,请参阅Log4J manual

  

Appender Additivity

     

记录器C的日志语句的输出将转到C及其祖先中的所有appender。这就是“appender additivity”一词的含义。

     

但是,如果记录器C的祖先,比如说P,将additivity标志设置为false,那么C的输出将被定向到C中的所有appender及其祖先,包括P但不包括任何appender。 P的祖先。

     

记录器默认情况下将其可加性标志设置为true。

答案 1 :(得分:0)

 log4j.logger.success=TRACE, SuccessAppender