log4j模式%X以及要分配给它的属性

时间:2011-08-30 13:28:12

标签: log4j pattern-layout

我正在尝试使用日志查看器(无论哪一个)来解析我的日志文件。

我的log4j模式就是这个。

%p [%t](%C {1}:%M():%L)%d {dd / MM / yyyy-HH:mm:ss,SSS} S:%X {serviceType} N: %X {requestID} - %m%n

日志查看器(至少是开源查看器)需要您实现模式,以便他们能够读取文件。

例如: 对于log4j模式:%p [%t](%C {1}:%M():%L)%d {dd / MM / yyyy-HH:mm:ss,SSS} - %m%n

日志查看器模式将是: pattern = pattern = LEVEL [THREAD](CLASS:METHOD():LINE)TIMESTAMP - MESSAGE

这个例子效果很好。

但我无法以任何方式解析%X属性。我已经看到有NDC和PROP(键)的属性类型,但我似乎要么错过使用它们或者它们与%X无关

所以问题是如何实现模式,因此它将读取%X参数。

感谢。

1 个答案:

答案 0 :(得分:3)

好的,我想我看到了问题。

您的应用程序使用log4J MDC,因为它在模式布局中使用%X。您的日志查看器似乎只支持NDC。

NDC的log4j模式布局是%x(小写)。

如果您对应用程序有控制权,则必须更改MDC - > NDC并修改log4j.xml以使用%x而不是%X。如果应用程序很庞大,这可能是一项重大任务......

另一种解决方案是找到支持MDC(%X)的日志查看器

我试图四处寻找PROP(关键),但是没有太多的文档; - (

祝你好运