log4j的记录到DB(在集群)
-
20-09-2019 - |
题
我有一个Java应用程序至极两台机器上在集群上运行,他们都登录到一个MySQL数据库。一切工作正常,但我想在数据库至极的附加字段表示这个请求是来自该IP。结果 我解决了这个具有两种不同的log4j.properties文件,但我想有一个更好的方式来做到这一点?
这是在log4j.properties文件的行是不同的机器上:
log4j.appender.DB.sql=INSERT INTO log4j (date, category, priority, server, message) VALUES ('%d{dd MMM yyyy HH:mm:ss,SSS}','%c','%p','10.20.30.40','%m')
有什么像connection_ip MySQL的?或在log4j的一个占位符,这样我就可以在那里从Java应用程序存储的IP?
干杯,卢卡斯
解决方案
我使用的log4j的映射诊断上下文解决了这个。 当我启动Java应用程序I存储IP与此命令。
MDC.put("serverIP", InetAddress.getLocalHost().getHostAddress());
和现在我可以使用%X {服务器IP}如在我的log4j.properties文件的占位符。
log4j.appender.DB.sql=INSERT INTO log4j (date, category, priority, server, sessionID, message) VALUES ('%d{dd/MM/yyyy HH:mm:ss,SSS}','%c','%p','%X{serverIP}','%X{sessionID}','%m')
下面是关于log4j的一个极好的职位有几个很好的例子点击 http://onjava.com/pub/一个/ ONJava的/ 2002/08/07 / log4j.html?页= 3
不隶属于 StackOverflow