如果之前有人问过,请道歉。
我最近在C#解决方案上启用了诊断消息记录。但是,我从网络获得的例子,标准,我认为记录的事件太多了。
我是否可以调整此消息记录以仅记录系统中遇到的严重错误?我仍然对这个消息记录很新,所以如果我知道该怎么做,我就不会问你们。
我目前的设置:
<system.serviceModel>
<diagnostics>
<!-- Enable Message Logging here. -->
<!-- log all messages received or sent at the transport or service model levels >-->
<messageLogging logEntireMessage="true" maxMessagesToLog="300" logMessagesAtServiceLevel="true" logMalformedMessages="true" logMessagesAtTransportLevel="true" />
</diagnostics>
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Information,ActivityTracing" propagateActivity="true">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="C:\logs\Diagnostics.svclog" type="System.Diagnostics.XmlWriterTraceListener" name="xml" />
</sharedListeners>
<trace autoflush="true" />
所有这一切当然都在我的App.config中。我只在这里使用它,而不是在我的代码或其他任何地方。它有效,但对我来说,有太多的信息被保存。我可以保存主要/严重错误吗?
C#项目,Visual Studio 2015,Windows 10.如果您需要更多,请询问。
答案 0 :(得分:2)
在你<source>
节点内,将属性switchValue的值更改为Critical,Error然后这应该只记录这些事件。信息是一种通常在跟踪中到处发生的事件。
您也可以在此处查看有关日志记录的更多信息:From zero to logging
答案 1 :(得分:1)
您的设置中过多日志的问题发生在System.ServiceModel.MessageLogging
侦听器中;您告诉ServiceModel
记录所有服务消息,这很好。但是,如果您只想记录ServiceModel
和ServiceModel.MessageLogging
的错误消息,则需要为sharedListener
创建过滤器。
以下诊断配置非常有效:
<system.diagnostics>
<sources>
<source name="System.ServiceModel">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<switches>
<add name="System.ServiceModel" value="Critical, Error"/>
</switches>
<sharedListeners>
<add initializeData="Diagnostics.svclog" type="System.Diagnostics.XmlWriterTraceListener" name="xml">
<filter type="System.Diagnostics.EventTypeFilter" initializeData="Critical, Error"/>
</add>
</sharedListeners>
<trace autoflush="true" />
<filter />
元素告诉侦听器只写入EventType为Critical或Error的日志。这里的假设是,如果消息有问题,它将被标记为错误事件类型。
此外,您可以创建rolling或daily XmlWriterTraceListener
来分别按文件大小或每天开始新的日志。
只需更改sharedListener类型:
<add initializeData="Diagnostics.svclog"
type="My.Namespace.MyXmlWriterTraceListener, MyAssembly"
name="xml">
...
</add>