诊断记录
Diagnostic Logging
抱歉,如果之前有人问过这个问题。
我最近在我们的 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。我只在这里使用它,而不是在我的代码或其他任何地方。它有效,但对我来说,保存的信息太多了。我可以只保存 major/critical 个错误吗?
C#项目,Visual Studio 2015,Windows10,如需更多,请询问。
在您 <source>
节点中将属性 switchValue 的值更改为 Critical, Error 然后这应该只记录那些事件。信息是追踪中普遍存在的事件。
您也许还可以查看此处以获取有关日志记录的更多信息:From zero to logging
设置中日志过多的问题出现在 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 or daily XmlWriterTraceListener
以分别按文件大小或每天开始一个新日志。
只需更改 sharedListener 类型:
<add initializeData="Diagnostics.svclog"
type="My.Namespace.MyXmlWriterTraceListener, MyAssembly"
name="xml">
...
</add>
抱歉,如果之前有人问过这个问题。
我最近在我们的 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。我只在这里使用它,而不是在我的代码或其他任何地方。它有效,但对我来说,保存的信息太多了。我可以只保存 major/critical 个错误吗?
C#项目,Visual Studio 2015,Windows10,如需更多,请询问。
在您 <source>
节点中将属性 switchValue 的值更改为 Critical, Error 然后这应该只记录那些事件。信息是追踪中普遍存在的事件。
您也许还可以查看此处以获取有关日志记录的更多信息:From zero to logging
设置中日志过多的问题出现在 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 or daily XmlWriterTraceListener
以分别按文件大小或每天开始一个新日志。
只需更改 sharedListener 类型:
<add initializeData="Diagnostics.svclog"
type="My.Namespace.MyXmlWriterTraceListener, MyAssembly"
name="xml">
...
</add>