2014-11-06 48 views
0

我們使用企業庫應用程序塊6來實現日誌記錄。我們有兩個跟蹤監聽器,一個用於登錄數據庫,另一個用於發送電子郵件警報。他們可以這樣來配置:電子郵件跟蹤偵聽程序爲什麼阻止其他偵聽程序工作?

<loggingConfiguration name="Logging Application Block" tracingEnabled="true" defaultCategory="MyProject" logWarningsWhenNoCategoriesMatch="true"> 
    <listeners> 
     <add name="Database Trace Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.Database.FormattedDatabaseTraceListener,Microsoft.Practices.EnterpriseLibrary.Logging.Database" ... /> 
     <add name="Email Trace Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.EmailTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" ... /> 
    </listeners> 
    <categorySources> 
     <add switchValue="All" name="MyProject"> 
      <listeners> 
       <add name="Email Trace Listener" /> 
       <add name="Database Trace Listener" /> 
      </listeners> 
     </add> 
    </categorySources> 
    ... 
</loggingConfiguration> 

我們的問題是,如果電子郵件跟蹤偵聽簡化版,由於某種原因,工作 - 在SMTP服務器關閉,例如 - 然後數據庫跟蹤偵聽器也不起作用。
即使電子郵件跟蹤失敗,是否有辦法配置數據庫跟蹤偵聽器工作?

回答

1

看來我設法解決它,我必須扭轉聽衆這樣的順序:

  <listeners> 
       <add name="Database Trace Listener" /> 
       <add name="Email Trace Listener" /> 
      </listeners> 

現在不光記錄的作品,但我連日誌關於收到其他錯誤消息電子郵件跟蹤失敗:

"Tracing to LogSource 'MyProject' failed. Processing for other sources will continue. See summary information below for more information. Should this problem persist, stop the service and check the configuration file(s) for possible error(s) in the configuration of the categories and sinks." 

我可以看到一些理由在這個行爲,但是我還是不明白,爲什麼至少DB聽衆並沒有在第一種情況下工作。

+1

如果單個源具有多個跟蹤偵聽器,則配置處理將在任何跟蹤偵聽器中發生錯誤時停止。即在失敗後配置的任何跟蹤偵聽器將不會執行(針對該源)。我不喜歡這種方法,因爲我寧願所有的聽衆都會被獨立處理。 – 2014-11-14 17:46:25