0

我读过这个问题,我知道它可能: Common.Logging for TraceSource

有人可以发布一个例子。如果可以将其配置为在代码中使用 TraceSource 而不是使用 .config 文件,这也可能会有所帮助。

谢谢

4

1 回答 1

3

如果您的目标是让 Common.Logging 将消息转发到 TraceSource,那么您的记录器名称和跟踪源名称必须匹配。

<configuration>
  <configSections>
    <sectionGroup name="common">
      <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
    </sectionGroup>
  </configSections>
  <common>
    <logging>
      <factoryAdapter type="Common.Logging.Simple.TraceLoggerFactoryAdapter, Common.Logging">
        <arg key="level" value="ALL" />
        <arg key="showLogName" value="true" />
        <arg key="showDataTime" value="true" />
        <arg key="dateTimeFormat" value="yyyy/MM/dd HH:mm:ss:fff" />
        <arg key="useTraceSource" value="true" />
      </factoryAdapter>
    </logging>
  </common>
  <system.diagnostics>
    <sources>
      <source name="SomeSourceName" switchName="YourSwitch">
        <listeners>
          <add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="Application"/>
        </listeners>
      </source>
    </sources>
    <switches>
      <add name="YourSwitch" value="Information"/>
    </switches>
  </system.diagnostics>
</configuration>

从您编写的代码中:

var logger = Common.Logging.LogManager.GetLogger("SomeSourceName");

希望这会有所帮助,即使该帖子已有 2 个月的历史并且 tracesouce 是通过 .config 设置的。

于 2014-01-06T22:06:56.693 回答