我正在使用Microsoft企业库
将一些日志写入事件日志它的写入记录很好,但似乎没有在事件日志中设置类别。该类别在日志的邮件正文中显示正常(如果我选择设置该类别),但事件查看器不会选择该类别。
我缺少什么?
c#source
LogEntry log = new LogEntry();
log.Message = "Test";
log.Categories.Add("Event");
Logger.Write(log);
web config
<loggingConfiguration name="Logging Application Block" tracingEnabled="true"
defaultCategory="General" logWarningsWhenNoCategoriesMatch="true">
<listeners>
<add source="TestLogSource" formatter="Text Formatter" log="TestLog"
machineName="" listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.FormattedEventLogTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
traceOutputOptions="None" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FormattedEventLogTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
name="Formatted EventLog TraceListener" />
</listeners>
<formatters>
<add template="Timestamp: {timestamp}
Message: {message}
Category: {category}
Severity: {severity}"
type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
name="Text Formatter" />
</formatters>
<categorySources>
<add switchValue="All" name="Events">
<listeners>
<add name="Formatted EventLog TraceListener" />
</listeners>
</add>
<add switchValue="All" name="General">
<listeners>
<add name="Formatted EventLog TraceListener" />
</listeners>
</add>
</categorySources>
<specialSources>
<allEvents switchValue="All" name="All Events" />
<notProcessed switchValue="All" name="Unprocessed Category" />
<errors switchValue="All" name="Logging Errors & Warnings">
<listeners>
<add name="Formatted EventLog TraceListener" />
</listeners>
</errors>
</specialSources>
答案 0 :(得分:5)
EventLog类别与LogEntry类别是独立且不同的。所以我认为您不能使用LogEntry类别在EventLog类别字段中显示。
从数据的角度来看,类型是不兼容的:EventLog类别很短,而LogEntry类别是字符串。是的,在事件查看器中它显示一个字符串,但是通过注册表中定义的CategoryMessageFile查找该值。
如果您希望能够在事件查看器中进行一些过滤,则可以使用LogEntry.EventId属性。您可以使用任何您希望的约定来填充它。例如每个日志记录点的唯一事件ID,每层的事件ID,每个类的事件ID或其他约定。
作为后备,您可以随时在EventLog Entry的描述中查找您的类别。
答案 1 :(得分:1)
此链接(http://drdobbs.com/184405714)包含有关如何创建类别的更多信息。