2008-10-02 30 views
34

我正在使用Log4Net和AdoNetAppender將消息從簡單的systray應用程序記錄到SQL Server 2005數據庫中。如何通過log4net記錄機器名稱?

我想記錄機器名稱以及日誌消息,因爲這個應用程序將運行在多臺機器上,我需要知道消息來自哪一個。

但是,我無法找到一種方法來通過我使用的appender log4net.Layout.PatternLayout公開這些信息。

有沒有辦法通過log4net以這種方式記錄機器名?

回答

72

可以使用預填充屬性log4net:HostName,例如:

<parameter> 
    <parameterName value="@machine" /> 
    <dbType value="String" /> 
    <size value="255" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%X{machine}" /> 
    </layout> 
</parameter> 

然後寫入日誌之前添加此行

<conversionPattern value="%property{log4net:HostName}" /> 

這樣你就不需要填充MDC。

+1

對於未來的讀者,我讓我的AdoNetAppender使用這個<參數名稱=「工作站」> granadaCoder 2017-04-12 19:09:12

11

您可以創建類似下面的參數:MDC.Set("machine", Environment.MachineName);

+0

完美運作。我知道它一定是簡單的。謝謝。 – 2008-10-02 15:48:27