2012-08-04 60 views
1

我有一个Java API库。该库旨在测试设备的功能。后来这些库作为Web服务公开,以便非Java程序也可以访问它。我有一个包含bean和依赖库的单个EAR,这个EAR被部署到一个weblogic服务器中。基于设备MAC/IP的log4j日志记录

同时,我们正在测试这些来自多个代理机器的多个设备的webservices以及来自库的所有日志,并捕获到weblogic控制台日志文件中。我在weblogic服务器中配置了log4j。现在我面临的问题是,我无法区分这些日志来自哪些设备/ IP。

根据设备MAC/IP识别日志的更好方法是什么?我GOOGLE了,并得到像log4j MDC输入可用于此应用程序。由于我没有任何由我写的servlet,我不确定我是否可以继续使用MDC。

请指导我选择每个MAC/IP配置日志的最佳方式。

+0

[这个优秀的答案解释了如何使用MDC添加用户名](http://stackoverflow.com/a/6116385/150992) - 它比@MaDa的答案更详细,可能会有用。 – Eyal 2013-04-14 12:37:19

回答

0

MDC/NDC不依赖于servlet;他们在javadoc中提到的事实只是为了举例说明。您可以在任何Java应用程序中使用它。

MAC/IP对Web服务不可见,因此您必须将其作为Web服务消息的一部分显式发送。一旦你这样做,在处理方法,调用

NDC.push("127.0.0.1"); // example IP obtained from the web service 
MDC.put("IP", "127.0.0.1"); 

,并在各自的PatternLayout使用%x%X{IP}