如何通过log4net记录机器名称?

Ste*_*ton 42 .net c# logging log4net

我正在使用Log4Net和AdoNetAppender将消息从简单的系统托盘应用程序记录到SQL Server 2005数据库中.

我想记录机器名称和日志消息,因为这个应用程序将在多台机器上运行,我需要知道消息来自哪一个.

但是,我找不到通过我使用appender的log4net.Layout.PatternLayout公开这些信息的方法.

有没有办法以这种方式通过log4net记录机器名称?

小智 83

您可以使用预先填充的属性log4net:HostName,例如:

<conversionPattern value="%property{log4net:HostName}" />
Run Code Online (Sandbox Code Playgroud)

这样您就不需要填充MDC.

  • 对于未来的读者,我让我的AdoNetAppender使用此<parameter name ="workstation"> <parameterName value ="@ workstation"/> <dbType value ="String"/> <size value ="256"/> <layout type ="log4net.Layout.PatternLayout"value ="%property {log4net:HostName}"/> </ parameter> (4认同)
  • 未来的读者.我认为这来自本页的FIELDS:http://logging.apache.org/log4net/release/sdk/html/T_log4net_Core_LoggingEvent.htm (3认同)

Tha*_*had 11

您可以创建类似于以下内容的参数:

<parameter>
  <parameterName value="@machine" />
  <dbType value="String" />
  <size value="255" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%X{machine}" />
  </layout>
</parameter>
Run Code Online (Sandbox Code Playgroud)

然后在写入日志之前添加此行: MDC.Set("machine", Environment.MachineName);