我正在嘗試創建一個日誌解決方案,涉及多個機器上的多個進程。我計劃使用UDPAppender將所有日誌消息發送到可管理它們的單臺機器。我有幾個有關patterntrings與patternlayouts的問題。log4net進程ID信息
因爲我需要知道哪臺機器和哪個進程的日誌信息來自哪裏,所以我想將它包含在日誌中。我發現%property {log4net:HostName}用於主機名,並且工作得很好。但是,我沒有在PatternLayouts中看到任何進程ID。當然,我在PatternString中看到類似的東西。從常見問題:
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<file type="log4net.Util.PatternString" value="log-file-[%processid].txt" />
<layout type="log4net.Layout.PatternLayout" value="%date [%thread] %-5level %logger - %message%newline" />
</appender>
但我不知道是否或如何混搭兩個(或者即使這是規範的方法來做到這一點)。
所以,我的問題是:
是什麼PatternString和的PatternLayout之間的區別?爲什麼都有?
我在PatternString中看到%processid,我怎麼在PatternLayout中得到相同的結果?這裏是我的測試佈局:
<layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] [%property{log4net:HostName}] %-5level %logger - %message%newline" /> </layout>
最後,是有意義的使用XML佈局爲UDP附加目的地。它看起來像XmlLayoutSchemaLog4j已經將HostNameProperty添加到XML消息。如果我不想將這個新的進程ID(也可能是進程名稱)添加到XML消息中,那麼執行此操作的最佳方法是什麼?我應該只複製src \ Layouts \ XmlLayoutSchemaLog4j.cs,修改它,讓log4net知道我創建了這個新的佈局(如SampleLayoutsApp)?
感謝您的幫助
嘗試一切%PID,%進程ID和更多的人,毫無效果。你的解決方案有效謝謝。 – Nemo 2015-06-18 20:45:54