有没有办法在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”。
提前感谢您的帮助。
答案 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”