如何使用log4j的相同记录器将不同的信息写入两个不同的文件?

Ran*_*ber 2 java logging log4j file

我想使用我的记录器写入两个不同的文件,声明如下:

public static final Logger logger = Logger.getLogger(Adapt.class);
PropertyConfigurator.configure("log4j.properties");
Run Code Online (Sandbox Code Playgroud)

log4j文件包含:

log4j.rootLogger=DEBUG, FA

#File Appender
log4j.appender.FA=org.apache.log4j.FileAppender
log4j.appender.FA.File=temp.ppr
log4j.appender.FA.layout=org.apache.log4j.PatternLayout
log4j.appender.FA.append=false
log4j.appender.FA.layout.ConversionPattern= %m%n
Run Code Online (Sandbox Code Playgroud)

是否可以使用记录器轻松地将不同的文本写入两个不同的文件?

如果没有,有没有办法用两个记录器做到这一点?(我尝试过并因为函数configure而出现问题,这是静态的.)

谢谢.

Axe*_*ine 6

只需定义第二个记录器变量:

Logger otherLogger = Logger.getLogger("OTHER_LOGGER");
Run Code Online (Sandbox Code Playgroud)

为它定义配置(注意log4j.记录器 .OTHER_LOGGER语法cf. log4j.rootLogger,如user623395venkatesh Dodla所指出的):

log4j.logger.OTHER_LOGGER=DEBUG, OtherAppender

log4j.additivity.OTHER_LOGGER = false

#File Appender
log4j.appender.OtherAppender=org.apache.log4j.FileAppender
log4j.appender.OtherAppender.File=temp2.ppr
log4j.appender.OtherAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.OtherAppender.append=false
log4j.appender.OtherAppender.layout.ConversionPattern= %m%n
Run Code Online (Sandbox Code Playgroud)

并像往常一样记录您的不同文本:

logger.debug("My normal log");
otherLogger.info("My special text");
Run Code Online (Sandbox Code Playgroud)

  • 把它全部放在同一个文件中.log4j.rootLogger和log4j.OTHER_LOGGER行. (2认同)