Como você registrar o nome da máquina via log4net?
Pergunta
Eu estou usando Log4Net com o AdoNetAppender para registrar mensagens de um aplicativo de bandeja do sistema simples em um banco de dados SQL Server 2005.
Eu quero registrar o nome da máquina juntamente com a mensagem de log porque este aplicativo será executado em várias máquinas e eu preciso saber sobre qual a mensagem se originou.
Mas, eu não posso encontrar uma maneira de expor essa informação através da log4net.Layout.PatternLayout que estou usando com o appender.
Existe uma maneira de registrar o nome da máquina via log4net desta maneira?
Solução
Você pode usar a propriedade log4net:HostName
pré-povoada, por exemplo:
<conversionPattern value="%property{log4net:HostName}" />
Desta forma, você não precisa preencher o MDC.
Outras dicas
Você pode criar um parâmetro semelhante ao seguinte:
<parameter>
<parameterName value="@machine" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%X{machine}" />
</layout>
</parameter>
Em seguida, adicione esta linha antes de escrever para o log: MDC.Set("machine", Environment.MachineName);