为什么它不遵循格式化程序的模板

时间:2011-03-04 19:44:51

标签: c# enterprise-library

这是我的配置文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
    </configSections>
  <loggingConfiguration name="" tracingEnabled="true" defaultCategory="General" >
    <listeners>
      <add name="Event Log Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FormattedEventLogTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.FormattedEventLogTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                source="Enterprise Library Logging" formatter="Text Formatter"
                log="" machineName="." traceOutputOptions="None" />
      <add name="Rolling Flat File Trace Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                fileName="F:\MyLogFile.log" footer="" header="" rollInterval="Hour"
                traceOutputOptions="None" formatter="Text Formatter" />
    </listeners>
    <formatters>
      <add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                template="{timestamp} {severity} {message} "
                name="Text Formatter" />
    </formatters>
    <categorySources>
      <add switchValue="All" name="General">
        <listeners>
          <add name="Rolling Flat File Trace Listener" />
        </listeners>
      </add>
    </categorySources>
    <specialSources>
      <allEvents switchValue="All" name="All Events" />
      <notProcessed switchValue="All" name="Unprocessed Category" />
      <errors switchValue="All" name="Logging Errors &amp; Warnings">
        <listeners>
          <add name="Rolling Flat File Trace Listener" />
        </listeners>
      </errors>
    </specialSources>
  </loggingConfiguration>
</configuration>

当我使用下面的代码时

 Logger.Write("hello world", "", 0, 0, TraceEventType.Information);

我在日志文件

中得到了关注
  

3/4/2011 7:40:26 PM错误没有明确的类别''映射。日志条目是:
  时间戳:2011年3月4日下午7:40:26
  消息:Hello World
  类别:
  优先级:0
  EventId:0
  严重性:信息
  标题:
  机器:MyPC
  App Domain:ConsoleApplication1.vshost.exe
  ProcessId:8912
  进程名称:C:\ ConsoleApplication \ bin \ Debug \ ConsoleApplication.vshost.exe
  主题名称:
  Win32 ThreadId:5496
  扩展属性:

我做错了什么使它不尊重我在格式化程序中定义的template =“{timestamp} {severity} {message}”。

1 个答案:

答案 0 :(得分:2)

您已使用“常规”名称定义了类别,但在您登录时使用的是“”类别。

Logger.Write("hello world", "", 0, 0, TraceEventType.Information);

因此,您的“常规”类别不会处理您的LogEntry,而是由specialSource notProcessed处理。这就是“没有明确的类别映射”的消息,试图告诉你。

要使用您的类别,请将名称传递到Write方法:

Logger.Write("hello world", "General", 0, 0, TraceEventType.Information);

或者不指定类别,因为“General”被定义为defaultCategory。