2017-10-10 72 views
1

有沒有辦法在log4j中將機器名添加到日誌文件名?我有4臺機器/服務器運行Weblogic,每臺機器/服務器運行2個JVM應用程序的實例/節點(由供應商提供);此應用程序使用log4j生成日誌;但是,對於所有機器/服務器,日誌文件名稱都是相同的,因此當我必須查看或收集日誌以進行故障排除時,會造成太多麻煩。如何使用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

通過在您的文件名或appender模式中指定${weblogic.Name}您實際上正在使用WebLogic JVM參數中的值。

如果您可以將自定義參數添加到JMV參數,則可以將其用於記錄目的。

否則,您可以在此檢查其他WebLogic參數:https://docs.oracle.com/cd/E13222_01/wls/docs90/admin_ref/weblogicServer.html 也許weblogic.Domain將爲您工作。

如果您是使用x%X{key}具有日誌消息的主機可以設置MDC/NDC屬性,並輸出到日誌消息(參考https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html

+0

謝謝你的提示ALEH –

0

嘗試設置環境屬性像下面 System.setProperty OK (「serverHostName」,InetAddress.getLocalHost()。getHostName());

然後用它在你的log4j.xml 如下

PARAM NAME =」文件」 VALUE =」 $ {} serverHostName .LOG」

+0

謝謝你的提示阿倫 –

相關問題