我在Linux機器(RHEL 5.4)上使用java 1.4.2。由log4j創建的文件中的主機名
我們的應用程序使用log4j進行日誌記錄。我希望一些appender將創建文件名中包含主機名的文件。主機名不應該被硬編碼,而應該使用與here類似的系統屬性(請參閱$ {log4j.minutes})。
所以問題是系統屬性中是否有主機名。 根據here,沒有默認主機名屬性。
這意味着我需要從命令行代碼(-D標誌)添加主機名作爲系統屬性。
我想念什麼?
我在Linux機器(RHEL 5.4)上使用java 1.4.2。由log4j創建的文件中的主機名
我們的應用程序使用log4j進行日誌記錄。我希望一些appender將創建文件名中包含主機名的文件。主機名不應該被硬編碼,而應該使用與here類似的系統屬性(請參閱$ {log4j.minutes})。
所以問題是系統屬性中是否有主機名。 根據here,沒有默認主機名屬性。
這意味着我需要從命令行代碼(-D標誌)添加主機名作爲系統屬性。
我想念什麼?
否。系統屬性中沒有默認主機名。另外一臺計算機可能有多個網卡,每個網卡可能有多個IP號碼分配,每個IP號碼可能有自己的名稱,因此可能有幾個候選人可能是「默認主機名」。
當你已經提取出你喜歡的主機名的時候,看看如何將它保存在log4j MDC中 - 這是一個僞裝的Map--所以你可以在你的配置文件中引用你的日誌字符串)。
我想你必須擴展FileAppender並重寫activateOptions()將fileName屬性設置爲所需的值。從某個屬性讀取主機名或從InetAddress.getLocalHost()。getHostName()獲取它。
Linux環境中的另一種選擇是使用SyslogAppender,它包含輸出中的主機,並允許您受益於集中式日誌聚合。您需要將header屬性設置爲true以啓用時間戳和主機以標準syslog約定發送。如果你這樣做,那麼你會得到這樣的輸出,其中氙氣是機器的主機名:
Apr 25 14:33:17 xenon INFO Some log message
在這個例子中,轉換模式%-5p %c{2} - %m%n
我會投了,但鏈接的例子是死了,這就是爲什麼使用鏈接對業務不利。 : -/ –
Java年曆已經反彈了一下。 –
它不僅僅反彈了一下,它不是被劫持,就是現在有一個域名垃圾郵件發送者正在坐着。不過很高興看到你仍在身邊。儘管如此,我認爲backback機器始終是問題解決方案的一個選項。 https://web.archive.org/web/20120408141415/http://www.exampledepot.com/egs/java.net/Local.html 不知道爲什麼它不容易只發布這個網站上的代碼示例,TBH。 –