Я использую Log4Net с AdoNetAppender для записи сообщений из простого приложения Systray в базу данных SQL Server 2005.
Я хочу зарегистрировать имя машины вместе с сообщением журнала, потому что это приложение будет работать на нескольких машинах, и мне нужно знать, на какой из них было отправлено сообщение.
Но я не могу найти способ раскрыть эту информацию через log4net.Layout.PatternLayout, который я использую с приложением.
Есть ли способ зарегистрировать имя машины через log4net таким образом?





вы можете создать параметр, подобный следующему:
<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);
Вы можете использовать предварительно заполненное свойство log4net:HostName, например:
<conversionPattern value = "%property{log4net:HostName}" />
Таким образом, вам не нужно заполнять MDC.
Для будущих читателей я заставил свой AdoNetAppender работать с этим <parameter name = "workstation"> <parameterName value = "@ workstation" /> <dbType value = "String" /> <size value = "256" /> <layout type = "log4net.Layout.PatternLayout" value = "% property {log4net: HostName}" /> </parameter>
Будущие читатели. Я ~ думаю, что это происходит из ПОЛЕЙ на этой странице: logging.apache.org/log4net/release/sdk/html/…
Это сработало отлично. Я знал, что это должно быть что-то простое. Спасибо.