2008-10-02 8 views
34

J'utilise Log4Net avec AdoNetAppender pour consigner les messages d'une simple application systray dans une base de données SQL Server 2005. Je souhaite enregistrer le nom de l'ordinateur avec le message de journal, car cette application s'exécutera sur plusieurs machines et je dois savoir sur quel message provient le message. Mais, je ne trouve pas un moyen d'exposer cette information via le log4net.Layout.PatternLayout que j'utilise avec l'appender.Comment consignez-vous le nom de la machine via log4net?

Existe-t-il un moyen d'enregistrer le nom de la machine via log4net de cette manière?

Répondre

72

Vous pouvez utiliser la propriété prérempli log4net:HostName, par exemple:

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

De cette façon, vous n'avez pas besoin de remplir le MDC.

+1

Pour les futurs lecteurs, mon AdoNetAppender fonctionne avec granadaCoder

+1

Lecteurs futurs. Je pense que cela vient des FIELDS sur cette page: http://logging.apache.org/log4net/release/sdk/html/T_log4net_Core_LoggingEvent.htm – granadaCoder

11

vous pouvez créer un paramètre similaire à ce qui suit:

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

Ensuite, ajoutez cette ligne avant d'écrire dans le journal: MDC.Set("machine", Environment.MachineName);

+0

Cela a fonctionné parfaitement. Je savais que ça devait être quelque chose de simple. Merci. –