【问题标题】:Log4j2 appending values to a patternLog4j2 将值附加到模式
【发布时间】:2020-12-16 05:15:26
【问题描述】:

我有一个拦截器,可以获取有关已发出请求的一些信息,我想将该信息附加到 Log4j2 模式。

例如: 我有一个基本模式:

{"foo": "bar"}

然后在拦截器中我找到 "requestParam" : "word" 和 "remoteAddress" : "0.0.0.0"

我喜欢最终结果是{"foo": "bar", "requestParam" : "word", "remoteAddress" : "0.0.0.0"}

但是,下一个截获的请求可能具有相同的数据,只是多了一个字段。

所以它看起来像这样{"foo": "bar", "requestParam" : "word", "remoteAddress" : "0.0.0.0", "key": "value"}

我曾尝试使用 ScriptPatternSelector,但它不允许您追加,而只是在不同模式之间进行选择。

我正在尝试做的事情是否可以在 log4j2 中实现?

【问题讨论】:

    标签: java maven logging log4j2 mdc


    【解决方案1】:

    在您的拦截器中使用 ThreadContext.put(key, value) 添加您的数据。然后,在您的模式布局中,您可以指定打印所有 ThreadContext 项目或使用 %X 转换器或 MDC 查找 - ${ctx:key} 指定要打印的项目。然后,您的拦截器应在请求结束时调用 ThreadContext.clearMap(),以便数据不会渗入下一个请求。

    【讨论】:

      猜你喜欢
      • 2019-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-18
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      相关资源
      最近更新 更多