Как вы регистрируете имя машины через log4net? - PullRequest
41 голосов
/ 02 октября 2008

Я использую Log4Net с AdoNetAppender для записи сообщений из простого приложения systray в базу данных SQL Server 2005.

Я хочу записать имя машины вместе с сообщением журнала, потому что это приложение будет работать на нескольких машинах, и мне нужно знать, на каком из них возникло сообщение.

Но я не могу найти способ раскрыть эту информацию через log4net.Layout.PatternLayout, который я использую с appender.

Есть ли способ зарегистрировать имя машины через log4net таким образом?

Ответы [ 2 ]

80 голосов
/ 02 октября 2008

Вы можете использовать предварительно заполненное свойство log4net:HostName, например:

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

Таким образом, вам не нужно заполнять MDC.

11 голосов
/ 02 октября 2008

Вы можете создать параметр, подобный следующему:

<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);

...