如何使用log4j将机器名添加到日志文件名?

时间:2017-10-10 19:46:25

标签: java log4j weblogic

有没有办法在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”。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

通过在文件名或appender模式中指定${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)将其输出到日志消息

答案 1 :(得分:0)

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

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

param name =“file”value =“$ {serverHostName} .log”

相关问题