Ответ 1
Вы можете использовать предварительно заполненное свойство log4net:HostName
, например:
<conversionPattern value="%property{log4net:HostName}" />
Таким образом, вам не нужно заполнять MDC.
Я использую Log4Net с AdoNetAppender для регистрации сообщений из простого приложения systray в базу данных SQL Server 2005.
Я хочу записать имя машины вместе с сообщением журнала, потому что это приложение будет работать на нескольких компьютерах, и мне нужно знать, на каком из них возникло сообщение.
Но я не могу найти способ разоблачить эту информацию через log4net.Layout.PatternLayout, который я использую с помощью приложения.
Есть ли способ зарегистрировать имя машины через log4net таким образом?
Вы можете использовать предварительно заполненное свойство log4net:HostName
, например:
<conversionPattern value="%property{log4net:HostName}" />
Таким образом, вам не нужно заполнять MDC.
вы можете создать параметр, аналогичный следующему:
<parameter>
<parameterName value="@machine" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%X{machine}" />
</layout>
</parameter>
Затем добавьте эту строку перед записью в журнал: MDC.Set("machine", Environment.MachineName);