使用Log4J XMLLayout,我想在每个日志事件(日志行)中放置一系列包含在标签中的字段。 < x>一些信息< / x> < y>更多信息< / y> 。
在XML记录器的上下文中,这似乎是一种自然的方式,可以实现更加结构化的日志。有没有一种标准的方法,或者我必须自己用这些标签构建字符串?
我还可以使用带有XML标签的PatternLayout包装某些字段。我必须自己逃避XML,似乎XMLLayout应该是用于XML的。
另一个问题是XMLLayout将日志行放入CDATA块,这当然意味着该行中的任何XML都不能作为XML进行解析。
答案 0 :(得分:1)
似乎没有内置的功能。
我建议你这样做:因为你已经有了log4j,所以你有它的源代码。
找到文件org.apache.log4j.xml.XMLLayout
。复制它,将它的包名重命名为适合你的应用程序的东西,只需在适当的地方删除\r\n
(这个文件不大,所以它应该不是问题)并在log4j的配置文件中做一个引用使用您的新布局。
答案 1 :(得分:0)
当我使用log4j XMLLayout输出xml数据时,我刚刚使用
logger.info("]]>"+xmlMsg+"<![CDATA[");
这是一种懒惰的方式,但它对我有用,因为并非我的所有日志消息都是XML,所以那些没有被保留的文件。