【问题标题】:log4j logging to DB (in a cluster)log4j 记录到数据库(在集群中)
【发布时间】:2009-11-16 05:08:25
【问题描述】:

我有一个 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')

MySQL 有没有类似 connection_ip 的东西?还是 log4j 中的占位符,以便我可以将来自 Java 应用程序的 IP 存储在其中?

【问题讨论】:

    标签: mysql log4j cluster-computing database-cluster


    【解决方案1】:

    我通过使用 log4j 的映射诊断上下文解决了这个问题。 当我启动 Java 应用程序时,我使用此命令存储 IP。

    MDC.put("serverIP", InetAddress.getLocalHost().getHostAddress());
    

    现在我可以在我的 log4j.properties 文件中使用 %X{serverIP} 作为占位符了。

    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/a/onjava/2002/08/07/log4j.html?page=3

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-24
      • 2010-11-18
      • 1970-01-01
      • 2020-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-25
      相关资源
      最近更新 更多