java - java Log4J 有多个附加文件写入同一个文件,其中一个总是记录

  显示原文与译文双语对照的内容
145 5

我定义了一个 Log4J 附加器,如下所示:

log4j.logger.com.example = DEBUG, filelog
log4j.appender.filelog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.filelog.File=c:/app.log
log4j.appender.filelog.layout=org.apache.log4j.PatternLayout
log4j.appender.filelog.layout.ConversionPattern=%d | %m%n
log4j.appender.filelog.DatePattern=.dd-MM-yyyy

在我的课上,我得到的记录器如下所示:

Log logger = LogFactory.getLog(getClass());

我想要一个记录器始终记录某些消息( 不是错误,而是事务花费了多长时间) 。如果在调试或者信息上写这些,如果日志级别改变了,我将不会看到它们。我想我可以用另一个写到同一个文件的appender来完成这个任务。

这是否有可能有两个附加文件写入同一个文件?如何获得要在同一类中使用正常调试附件和事务性附加的记录器实例?这些消息都不会在同一个包中,因这里我不能配置一个特定的软件包始终记录。我必须让这些附件写入不同的文件,或者者我可以以在代码中检索它们,并有类似的内容:

Log alwaysLogger = LogFactory.getLog(ALWAYS);
alwaysLogger.debug("This message will always be written regardless of the level set on the filelog appender");

如果需要,我可以在两个不同的日志文件中写入 ,但我如何在我的类中获得i 一个包/类在正常运行期间将信息/错误消息和事务性"始终"消息记录在另一个 appender 。是否有办法实现我需要的,即使它写到两个不同的日志文件?

时间:原作者:0个回答

63 5

我不认为 Log4J 真的支持两个附加程序写入同一个文件,因为同步问题。如果可能的话,最好是使用 Logback服务器作为后台日志系统,因为Logback是 Log4J,同时支持多个文件写入到一个文件。检查 FileAppender,它是谨慎的模式。

你可以从你的描述中选择 ,似乎你也应该签出你的标记。你只需要一个记录器实例,可以以使用标记获得更细粒度的控件,因为它们基本上是"这里日志语句具有特殊用途,必须使用适当的附加程序记录该语句"。你还可以检查日志附加附加项 ,当你使用两个或者多个附加程序作为一个日志语句时,通常。

原作者:
...