使用log4j2,如何记录键值对

时间:2014-06-18 19:03:06

标签: java logging log4j log4j2

我需要创建具有键值对的日志,如下所示。在PatternLayout中是否支持使用log4j2.xml为log_level,class_name,event_id等线程中的静态字段执行此操作。

示例日志:

2014-06-18 11:57:46,719 log_level =“INFO”  class_name =“com.abc.dgl.App:main(158)”name =“应用程序启动事件”event_id =“b88f7ea0-4cb1-438f-a728-ac7c2bdac578”app =“Test App”severity =“info”action =“加载sfor文件处理“desc =”道具被读取并加载“result =”success“reason =”abc“transaction_id =”b88f7ea0-4cb1-438f-a728-ac7c2bdac578“

1 个答案:

答案 0 :(得分:6)

是的,这是可能的。

您可以使用MapMessagemap(或K)转换模式支持的PatternLayout:示例布局模式为{{1} }}

记录MapMessage如下所示:"%-5p [%t]: %m %map%n"

另一种方法是使用ThreadContext地图。 PatternLayout的Map<String,String> myMap = getMyMap(); Logger.debug(new MapMessage(myMap));(或mdc)转换模式支持此功能。示例模式:X。 一种常见的用法是在用户登录时将用户ID放在线程上下文映射中,并在该线程发出的所有日志消息中显示此用户ID,直到用户注销为止。

除了记录整个地图外,您还可以通过在布局模式中指定密钥来记录特定密钥:例如"%-5p [%t]: %m %mdc%n"

相关问题