Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用log4jxmlayout在每行中获取XML结构化数据?_Xml_Log4j - Fatal编程技术网

如何使用log4jxmlayout在每行中获取XML结构化数据?

如何使用log4jxmlayout在每行中获取XML结构化数据?,xml,log4j,Xml,Log4j,使用log4jxmllayout,我想在每个日志事件(日志行)中放置一系列字段,用标签包装。一些信息更多信息 在XML记录器的上下文中,这似乎是实现更结构化日志的自然方式。有没有一种标准的方法来实现这一点,或者我必须自己用这些标记来构建字符串 我还可以使用带有XML标记的PatternLayout来包装某些字段。我自己必须避开XML,似乎XMLLayout应该是用于XML的 另一个问题是XMLLayout将日志行放入CDATA块,这当然意味着该行中的任何XML都不能解析为XML。似乎没有用于此的

使用log4jxmllayout,我想在每个日志事件(日志行)中放置一系列字段,用标签包装。一些信息更多信息

在XML记录器的上下文中,这似乎是实现更结构化日志的自然方式。有没有一种标准的方法来实现这一点,或者我必须自己用这些标记来构建字符串

我还可以使用带有XML标记的PatternLayout来包装某些字段。我自己必须避开XML,似乎XMLLayout应该是用于XML的


另一个问题是XMLLayout将日志行放入CDATA块,这当然意味着该行中的任何XML都不能解析为XML。

似乎没有用于此的内置功能

我建议这样做:既然已经有了log4j,就有了它的源代码


查找文件
org.apache.log4j.xml.xmlayout
。复制它,将它的包名重命名为适合您的应用程序的名称,只需在适当的位置剥离
\r\n
(此文件不大,所以不应该是问题),并在log4j的配置文件中引用以使用新布局

这似乎没有内置的功能

我建议这样做:既然已经有了log4j,就有了它的源代码


查找文件
org.apache.log4j.xml.xmlayout
。复制它,将它的包名重命名为适合您的应用程序的名称,只需在适当的位置剥离
\r\n
(此文件不大,所以不应该是问题),并在log4j的配置文件中引用以使用新布局

当我使用log4jxmlayout输出我刚才使用的xml数据时

logger.info("]]>"+xmlMsg+"<![CDATA[");

logger.info(“]]>”+xmlMsg+“当我使用log4jxmlayout输出我刚才使用的xml数据时

logger.info("]]>"+xmlMsg+"<![CDATA[");
logger.info(“]]>”+xmlMsg+“