Java 如何在log4j2中生成标题行

Java 如何在log4j2中生成标题行,java,logging,configuration,log4j,log4j2,Java,Logging,Configuration,Log4j,Log4j2,在log4j中,我们有时会创建第二个记录器,并将CSV数据作为应用程序的度量表输出到它。与我们用于调试等的普通日志不同,这些数据很容易导入和绘制 在旧的log4j中,我们通过子类化PatternLayout、重写header属性并将其指定为: log4j.logger.servicePerformance=INFO, servicePerformance log4j.appender.servicePerformance=mypackage.log4j.SingleHeaderFileAppen

在log4j中,我们有时会创建第二个记录器,并将CSV数据作为应用程序的度量表输出到它。与我们用于调试等的普通日志不同,这些数据很容易导入和绘制

在旧的log4j中,我们通过子类化PatternLayout、重写header属性并将其指定为:

log4j.logger.servicePerformance=INFO, servicePerformance
log4j.appender.servicePerformance=mypackage.log4j.SingleHeaderFileAppender
log4j.appender.servicePerformance.File=logs/performance.log
log4j.appender.servicePerformance.layout=mypackage.log4j.HeaderLayout
log4j.appender.servicePerformance.layout.ConversionPattern=%m%n
log4j.appender.servicePerformance.layout.Header=Start Time, Service Invoked, Elapsed ms, Candidate Count, Asset Count
log4j.additivity.servicePerformance=false

我不知道如何在log4j 2中做到这一点,我们现在有两个最近转换为使用的应用程序。

Log4j2的PatternLayout还支持页眉和页脚属性:

<PatternLayout>
  <pattern>%d %p [%t] %c %m%n</pattern>
  <header>This is a header</header>
  <footer>(c) 1999-2014</footer>
</PatternLayout>

%d%p[%t]%c%m%n
这是一个标题
(c) 1999-2014
我认为属性也起作用:

<PatternLayout pattern="%d %p [%t] %c %m%n"
  header="This is a header"
  footer="(c) 1999-2014" />


这是没有正确记录的,谢谢你指出这一点。

我真希望这是真的。但事实并非如此。我添加了:函数、开始时间、已用毫秒、请求的资产、返回的资产和获取的资产:2014-07-07 09:42:21704错误模式布局包含无效元素或属性“header”,您使用的是哪个版本的log4j2?rc2?在log4j2-rc2中添加了页眉/页脚支持(请参阅)。这仍然是一个问题,因为建议的解决方案在应用程序每次启动或停止时都会显示页眉,而不仅仅是在新文件上。我认为这是不可能的。您是否意识到Log4j 1.2自2015年8月起就已停止使用?(). 此外,已知log4j1.2在java9()中被破坏。如果您的公司代码只是记录日志,而不是试图定制Log4j 1.2,那么Log4j-1.2-api适配器应该使迁移变得容易。