2015-11-04 106 views
0

道歉,如果這之前已經問過。診斷日誌記錄

我最近在我們的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.如果您需要更多,請詢問。

回答

2

您內部<source>節點將屬性switchValue的值更改爲Critical,Error,那麼這應該只記錄這些事件。信息是一個在跟蹤中通常發生的事件。

你可以,也許還看這裏獲得有關日誌的詳細信息:From zero to logging

1

在你的設置過多的日誌中的問題在System.ServiceModel.MessageLogging聽者發生;你告訴ServiceModel記錄所有服務消息,這很好。但是,如果您只想記錄ServiceModelServiceModel.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 />元素告訴聽衆只與臨界或錯誤的事件類型寫日誌。這裏的假設是,如果消息有問題,則會用Error事件類型標記。

此外,您可以創建一個rollingdailyXmlWriterTraceListener以分別按文件大小或每天開始一個新的日誌。

簡單地改變sharedListener類型:

<add initializeData="Diagnostics.svclog" 
    type="My.Namespace.MyXmlWriterTraceListener, MyAssembly" 
    name="xml"> 
    ... 
</add>