2012-06-27 143 views
2

我的應用程序使用Log4net寫入事件查看器。下面是我的程序的App.config文件的log4net的部分:Log4net停止寫入事件日誌

<log4net> 
    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" > 
     <applicationName value="CarSystem" /> 
     <logName value="CarSystemLog" /> 
     <threshold value="DEBUG" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" /> 
     </layout> 
    </appender> 
    <root> 
     <level value="DEBUG" /> 
     <appender-ref ref="EventLogAppender" /> 
    </root> 
</log4net> 

現在,這些設置都工作正常,直到前天約下午12:30。突然間(當我需要查看日誌中的消息時),它停止寫入日誌文件。

自定義事件日誌在查看器中。我今天重新啓動了機器,但仍然沒有新的東西進入日誌。我將最大日誌大小增加到10880 KB。

爲什麼log4net不再寫入我的日誌文件?

+2

是否有人或某事更改了正在寫入日誌文件的文件夾的權限? –

+0

不是我的知識。這是我的開發工作站,我是一個管理員。我知道我沒有改變它。我必須檢查是否有人通過某種短信工具做了些什麼,但讓我們假裝答案是否定的。 –

+0

那麼,如果你能排除環境問題,想到的最明顯的事情就是未處理的異常會阻止日誌代碼執行。鑑於「正當我需要審查......」聲明時,它使我相信某處出了問題。如果你知道日誌代碼正在執行,我不知道。 –

回答

2

我又回到了log4net的文檔,並注意到這樣一句話:

當務之急是要進行日誌記錄調用盡早應用程序啓動過程中,當然之前的任何外部組件已經被加載並被調用。

嗯,我曾在我的AssemblyInfo.cs的XMLConfiguration中的屬性,並在代碼中LogManager.GetLogger的電話,但它是一個調用後,開始我已經加入到我的WPF的一個應用的App對象的構造函數監控對象。我意識到,當我閱讀本聲明並查看代碼後,添加了此調用後,日誌記錄停止了。

所以我把電話轉到LogManager.GetLoggerApp構造函數中的第一個語句,然後再次開始記錄。 Hallelieuia!

感謝您的幫助和建議。

+0

沒有爲我工作 – WSK

11

與其尋找解決方案,更好地找到原因。

我建議你啓用log4net的內部調試日誌記錄到文件(任何文件),它會轉儲它的麻煩在那裏。當我的日誌文件(應該與事件日誌相同的東西)沒有出現時,我用了很多次。如何配置here

快速步驟:

  • 添加到您的app.config:
<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
     <add key="log4net.Internal.Debug" value="true"/> 
    </appSettings> 
</configuration> 
  • 這也添加到配置(configuration部分)。
<system.diagnostics> 
    <trace autoflush="true"> 
     <listeners> 
       <add 
       name="textWriterTraceListener" 
       type="System.Diagnostics.TextWriterTraceListener" 
       initializeData="C:\tmp\log4net.txt" /> 
     </listeners> 
    </trace> 
</system.diagnostics> 

與權限或那麼無論將被記錄到跟蹤文件中的任何問題。

+0

我試着進行這些更改,但在調試輸出窗口中沒有關於log4net中的錯誤的消息。我現在正試圖解決其他問題,我會回頭去看看,但缺乏有用的信息令人沮喪。 –

+0

@TonyVitabile:開始時必須至少有一些初始化行。你可以仔細檢查配置嗎? –

+0

是的,有初始化線。我的意思是說沒有任何錯誤消息或任何有用的信息來解釋爲什麼消息不會進入事件日誌。 –