【问题标题】:Extend PatternLayout for custom Header in log4j2在 log4j2 中为自定义 Header 扩展 PatternLayout
【发布时间】:2019-04-26 17:32:13
【问题描述】:

我也需要覆盖 Log4j2 的 PatternLayout 中的“getHeader()”函数。 标头不仅仅是一个静态字符串,所以我不能只在配置中使用“标头”属性。我必须在运行时调用一个函数来获取状态信息并将它们添加到标题中。

我已经尝试了一些扩展 PatternLayout 的示例,但没有成功。甚至官方 log4j 文档中的示例也不起作用。 在 Logback 上,扩展“getHeader()”函数要容易得多,而且运行良好。

我在 Patternlayout 中使用查找和 header 属性进行了尝试,这通常可以正常工作,但它永远不会刷新滚动文件的值。

【问题讨论】:

    标签: log4j2


    【解决方案1】:

    我现在可以通过查找来解决它: log4j2.yml:

    PatternLayout:
          Pattern: "%date{yyyy-MM-dd HH:mm:ss.SSS}{UTC}; %msg; %level; %logger; %class; %method; %thread; [%file:%line]%n"
          Header: $${headerlookup:header}
    

    查找插件:

    @Plugin(name = "headerlookup", category = StrLookup.CATEGORY )
    public class IONLog4j2HeaderLookup extends AbstractLookup {
    
    /**
     * Lookup the value for the key using the data in the LogEvent.
     * @param event The current LogEvent.
     * @param key  the key to be looked up, may be null
     * @return The value associated with the key.
     */
    @Override
    public String lookup(final LogEvent event, final String key) {
        return new IONLogLayout().getFileHeader();
    }
    

    }

    不要忘记“$$”在运行时读取值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      • 2011-01-23
      • 1970-01-01
      相关资源
      最近更新 更多