【问题标题】:How to add machine name to logfile name using log4j?如何使用 log4j 将机器名称添加到日志文件名称?
【发布时间】:2017-10-10 19:46:25
【问题描述】:

有没有办法在 log4j 中将机器名添加到日志文件名?

这是我的情况:我有 4 台机器/服务器运行 Weblogic,每台机器/服务器运行 JVM 应用程序的 2 个实例/节点(由供应商提供);此应用程序使用 log4j 生成日志;但是,所有机器/服务器的日志文件名称都是相同的,当我必须查看或收集日志以进行故障排除时,这给我带来了太多麻烦。

我已经能够通过使用以下 weblogic.Name 属性来区分它们之间的实例/节点:

<appender name="DFe" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="servers/${weblogic.Name}/logs/dfe_${weblogic.Name}.log"/>

现在我还需要通过机器/服务器名称来区分日志文件名称。怎么做?有没有 weblogic.Machine 属性什么的?

示例:我的机器/服务器名称是“ausplsynapp03”,实例/节点名称是“track60800-01”和“track60800-02”;所以我的日志文件名称将是“dfe_ausplsynapp03_track60800-01.log”和“dfe_ausplsynapp03_track60800-02.log”。

提前感谢您的帮助。

【问题讨论】:

    标签: java log4j weblogic


    【解决方案1】:

    通过在文件名或附加程序模式中指定 ${weblogic.Name},您实际上是在使用来自 WebLogic JVM 参数的值。

    如果您可以将自定义参数添加到 JMV 参数,则可以将其用于记录目的。

    否则,您可以在此处检查其他 WebLogic 参数:https://docs.oracle.com/cd/E13222_01/wls/docs90/admin_ref/weblogicServer.html 也许weblogic.Domain 会为你工作。

    如果您可以在日志消息中包含主机,您可以设置 MDC/NDC 属性并使用 x%X{key} 将其输出到日志消息(参考 https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html

    【讨论】:

    • 感谢 Aleh 的提示
    【解决方案2】:

    尝试如下设置环境属性 System.setProperty(“serverHostName”, InetAddress.getLocalHost().getHostName());

    然后在你的 log4j.xml 中使用它 如下

    参数名称=”文件” 值=”${serverHostName}.log”

    【讨论】:

    • 感谢阿伦的提示
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    • 2022-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多