Come si registra il nome della macchina tramite log4net?
Domanda
Sto usando Log4Net con AdoNetAppender per registrare i messaggi da una semplice applicazione systray in un database SQL Server 2005.
Voglio registrare il nome della macchina insieme al messaggio di registro perché questa applicazione sarà in esecuzione su più macchine e ho bisogno di sapere su quale ha originato il messaggio.
Ma non riesco a trovare un modo per esporre queste informazioni tramite log4net.Layout.PatternLayout che sto usando con l'appender.
Esiste un modo per registrare il nome della macchina tramite log4net in questo modo?
Soluzione
È possibile utilizzare la proprietà prepopolata log4net: Nomehost
, ad esempio:
<conversionPattern value="%property{log4net:HostName}" />
In questo modo non è necessario popolare MDC.
Altri suggerimenti
puoi creare un parametro simile al seguente:
<parameter>
<parameterName value="@machine" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%X{machine}" />
</layout>
</parameter>
Quindi aggiungi questa riga prima di scrivere nel registro: MDC.Set (" machine " ;, Environment.MachineName);