45

我正在使用带有 AdoNetAppender 的 Log4Net 将来自简单系统托盘应用程序的消息记录到 SQL Server 2005 数据库中。

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

但是,我找不到通过与 appender 一起使用的 log4net.Layout.PatternLayout 公开此信息的方法。

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

4

2 回答 2

88

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

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

这样您就不需要填充 MDC。

于 2008-10-02T16:40:31.913 回答
11

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

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

于 2008-10-02T15:23:04.640 回答