【发布时间】:2021-02-10 06:47:03
【问题描述】:
我想在日志文件的开头写入自定义标题行。自定义标题是 日期/时间、XML 文件名、
在 log4j 中,我可以通过扩展 PatternLayout 创建自定义标题。
我已经为自定义标题包含了 PatternLayout 的 log4j 属性配置和子类 CustomFileHeaderLayout。它工作正常。
log4j.properties
log4j.rootLogger=TRACE, R1, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.ibfd.addmliednotes.util.CustomFileHeaderLayout
##org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%p] [%d{dd MMM hh:mm:ss aa}] - %m%n
log4j.appender.R1=org.ibfd.addmliednotes.util.CustomFileAppender
##org.apache.log4j.RollingFileAppender
log4j.appender.R1.File=${file.name}
log4j.appender.R1.MaxFileSize=10MB
log4j.appender.R1.layout=org.ibfd.addmliednotes.util.CustomFileHeaderLayout
log4j.appender.R1.layout.ConversionPattern=[%d{dd MMM hh:mm:ss aa}] %m%n
CustomFileHeaderLayout.java
public class CustomFileHeaderLayout extends PatternLayout{
public String getHeader(){
return "Date/Time, XML filename, <treatydoc or <amendingdoc, Message\r\n";
}
}
但是,我无法在 log4j2 中执行此操作,因为 log4j2 的 PatternLayout 声明为最终类并且也不提供 getHeader() 方法。我不确定如何在 log4j2 中执行此操作。
【问题讨论】: