以下是我在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”。
答案 0 :(得分:2)
首先,您必须确保RootLogger没有记录任何内容。这可以通过不同的方式实现,但我的第一个解决方案是将其附加到NullAppender
。
log4j.rootLogger=OFF, NullAppender
# setup NullAppender
log4j.appender.NullAppender=org.apache.log4j.varia.NullAppender
然后,您必须为记录器设置日志级别和追加器(success
和error
):
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