问题描述
我需要创建具有键值对的日志,如下所示.对于使用log4j2.xml的log_level,class_name,event_id等线程中的静态字段,PatternLayout中是否提供支持?
I need to create logs with key value pairs as below. Is there any support in PatternLayout to do this for the static fields in a thread like log_level, class_name, event_id etc with the log4j2.xml.
示例日志:
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 =测试App"严重性="info" action =已加载sfor文件处理",并已读取并加载了desc ="props",结果为成功",原因为"abc",transaction_id ="b88f7ea0-4cb1-438f-a728-ac7c2bdac578"
2014-06-18 11:57:46,719 log_level="INFO" class_name="com.abc.dgl.App:main(158)" name="Application start event" event_id="b88f7ea0-4cb1-438f-a728-ac7c2bdac578" app="Test App" severity="info" action="loaded sfor file processing" desc="props was read and loaded" result="success" reason="abc" transaction_id="b88f7ea0-4cb1-438f-a728-ac7c2bdac578"
推荐答案
是的,这是可能的.
您可以使用 MapMessage ,由 PatternLayout :示例布局模式为"%-5p [%t]: %m %map%n"
.
You can either use a MapMessage, which is supported by the map
(or K
) conversion pattern of PatternLayout: an example layout pattern would be "%-5p [%t]: %m %map%n"
.
记录MapMessage看起来像这样:Map<String,String> myMap = getMyMap(); Logger.debug(new MapMessage(myMap));
Logging a MapMessage looks like this: Map<String,String> myMap = getMyMap(); Logger.debug(new MapMessage(myMap));
除了记录整个地图外,您还可以仅通过在布局模式中指定键来记录特定的键: "%-5p [%t]: %m %mdc{userID}%n"
.
这篇关于使用log4j2,如何记录键值对的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!