【问题标题】:How to produce a header row in log4j2如何在 log4j2 中生成标题行
【发布时间】:2014-08-24 13:21:23
【问题描述】:

在 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 中执行此操作,我们现在有两个应用程序最近转换为使用。

【问题讨论】:

    标签: java logging configuration log4j log4j2


    【解决方案1】:

    Log4j2 的 PatternLayout 也支持 header 和 footer 属性:

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

    我认为属性也可以:

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

    这没有正确记录,感谢您指出这一点。

    【讨论】:

    • 我真的希望这是真的。但事实并非如此。我添加了:
      Function, Start Time, Elapsed MS, Assets Requested, Assets Returned
      并得到:2014-07-07 09:42:21,704 ERROR PatternLayout contains an invalid element or attribute "header"
    • 您使用的是哪个版本的 log4j2? rc2?
    • 在 log4j2-rc2 中添加了页眉/页脚支持(请参阅 issues.apache.org/jira/browse/LOG4J2-496 )。
    • 这仍然是一个问题,因为建议的解决方案在每次应用程序启动或停止时都会将标头显示出来,而不仅仅是在新文件上。
    • 我认为这是不可能的。您是否知道自 2015 年 8 月以来 Log4j 1.2 已终止生命周期? (blogs.apache.org/foundation/entry/…)。此外,已知 Log4j 1.2 在 Java 9 中被破坏 (blogs.apache.org/logging/entry/moving_on_to_log4j_2)。如果您的公司代码只是简单地记录日志而不是尝试自定义 Log4j 1.2,那么 log4j-1.2-api 适配器应该使迁移变得容易。
    猜你喜欢
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-11
    • 2014-07-08
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多