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

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

但是,我找不到通过我在appender上使用的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(&quot; machine&quot;,Environment.MachineName);

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top