2010-07-08 75 views
3

我們有企業圖書館4.1日誌記錄設置時定期記錄無法寫入到事件日誌不寫入錯誤監聽器。記錄時沒有正確地配置也能正常工作(例如,在收聽文件名屬性無效字符),但沒有數據被寫入到事件日誌時,配置文件無法寫入由於無效的權限。這裏企業庫記錄4.1當文件無法訪問

FWIW的配置文件:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
    </configSections> 
    <loggingConfiguration name="Logging Application Block" tracingEnabled="true" defaultCategory="General" logWarningsWhenNoCategoriesMatch="true"> 
    <listeners> 
     <add source="Enterprise Library Logging" formatter="Event Log Formatter" machineName="." 
      log="Application" 
      listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.FormattedEventLogTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
      traceOutputOptions="None" filter="All" 
      type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FormattedEventLogTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
      name="Formatted EventLog TraceListener" /> 
     <add formatter="Text Formatter" 
     fileName="d:\trace.log" listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
     traceOutputOptions="None" filter="All" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
     name="Text TraceListener" /> 
    </listeners> 
    <formatters> 
     <add template="Timestamp: {timestamp}&#xD;&#xA;Message: {message}&#xD;&#xA;Category: {category}&#xD;&#xA;Priority: {priority}&#xD;&#xA;EventId: {eventid}&#xD;&#xA;Severity: {severity}&#xD;&#xA;Title:{title}&#xD;&#xA;Machine: {machine}&#xD;&#xA;Application Domain: {appDomain}&#xD;&#xA;Process Id: {processId}&#xD;&#xA;Process Name: {processName}&#xD;&#xA;Win32 Thread Id: {win32ThreadId}&#xD;&#xA;Thread Name: {threadName}&#xD;&#xA;Extended Properties: {dictionary({key} - {value}&#xD;&#xA;)}" type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="Event Log Formatter" /> 
     <add template="[{timestamp(yyyy-MM-dd HH:mm:ss,fff)}] {severity} {category}: {message}" 
     type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
     name="Text Formatter" /> 
    </formatters> 
    <specialSources> 
     <allEvents switchValue="All" name="All Events" /> 
     <notProcessed switchValue="All" name="Unprocessed Category"> 
     <listeners> 
      <add name="Text TraceListener" /> 
     </listeners> 
     </notProcessed> 
     <errors switchValue="All" name="Logging Errors &amp; Warnings"> 
     <listeners> 
      <add name="Formatted EventLog TraceListener" /> 
     </listeners> 
     </errors> 
    </specialSources> 
    </loggingConfiguration> 
</configuration> 

有人解決了這個嗎?

回答

2

您提到您在無效權限有問題時看到此行爲;而沒有這方面的任何具體文件,有信息身邊讀/寫訪問到文件:

這個問題似乎是企業庫不考慮暫時無法寫入日誌文件,因爲它是隻讀的錯誤。這是下面的文檔中,從MSDN說:

表4:Flatfile文件TraceListener的屬性

注:

如果指定 FlatfileTraceListener文件是隻讀的, 跟蹤偵聽器不寫 數據文件,也不例外 發生。確保文件 屬性設置爲讀/寫。

所以,因爲它不認爲這是一個錯誤,它不會被特殊類別「記錄錯誤&警告」回升,因此將不會被寫入到事件日誌(在你的情況)。

雖然文件沒有明確說明的權限問題會發生同樣的,我已經厭倦了使用兩個配置文件(只讀,並沒有分別的權限)和相同的行爲表現。

不幸的是,您似乎沒有多少選擇,只能確保該文件是可寫的,並且執行應用程序的用戶具有正確的寫入權限。