2008-10-02 4 views
34

Ich verwende Log4Net mit dem AdoNetAppender, um Nachrichten von einer einfachen Systray-Anwendung in eine SQL Server 2005-Datenbank zu protokollieren.Wie loggen Sie den Computernamen über log4net ein?

Ich möchte den Computernamen zusammen mit der Protokollnachricht protokollieren, da diese Anwendung auf mehreren Computern ausgeführt wird, und ich muss wissen, auf welcher die Nachricht stammt.

Aber ich kann keine Möglichkeit finden, diese Informationen über das log4net.Layout.PatternLayout, das ich mit dem Appender verwende, verfügbar zu machen.

Gibt es eine Möglichkeit, den Computernamen über log4net auf diese Weise zu protokollieren?

Antwort

72

Sie die Pre-besiedelten Eigenschaft log4net:HostName, zum Beispiel verwenden können:

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

Auf diese Weise müssen Sie das MDC nicht auffüllen.

+1

Für zukünftige Leser habe ich meinen AdoNetAppender mit diesem granadaCoder

+1

Zukünftige Leser. Ich denke, das kommt von den FELDS auf dieser Seite: http://logging.apache.org/log4net/release/sdk/html/T_log4net_Core_LoggingEvent.htm – granadaCoder

11

Sie einen Parameter ähnlich der folgenden erstellen:

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

Dann diese Zeile hinzufügen, bevor in das Protokoll zu schreiben: MDC.Set("machine", Environment.MachineName);

+0

Das hat perfekt funktioniert. Ich wusste, dass es etwas Einfaches gewesen sein musste. Vielen Dank. –

Verwandte Themen