2013-12-13 102 views
0

我正在嘗試使用log4net來跟蹤我的項目中可能出現的錯誤。使用WCF時Log4Net日誌文件未被寫入

我使用的是WCF服務,客戶端和服務器庫。

我遇到的問題是,每當我運行該項目,並且我想測試它時,它會在正確的目錄中創建日誌文件,但它永遠不會寫入它,即使我把Logger.Info 「測試」);在第一個電話。

我查了很多網站,我也嘗試了很多的東西,而且似乎沒有任何工作。

log4net.onfig:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
    </configSections> 
    <log4net> 
    <root> 
     <level value="ALL" /> 
     <appender-ref ref="GeneralAppender" /> 
    </root> 
    <logger name="GeneralLogger"> 
     <level value="ALL" /> 
     <appender-ref ref="GeneralAppender" /> 
    </logger> 
    <appender name="GeneralAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="C:\Users\myUser\Desktop\mylog.log" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="SIze" /> 
     <datePattern value="yyyy/MM/dd HH:mm:ss.ff" /> 
     <maxSizeRollBackups value="10" /> 
     <maximumFileSize value="10MB" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] - [%logger] %message%newline" /> 
     </layout> 
    </appender> 
    </log4net> 
</configuration> 

這個文件是定位服務項目,並在圖書館 兩個文件都設置了「複製到輸出目錄」屬性設置爲「複製,如果新」

我有modifify的AssemblyInfo.cs中

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)] 

到decalre變量的方法是:

static readonly log4net.ILog _Logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 

中,我使用記錄程序的方法如下:

_Logger.Info("some info"); 
_Logger.Error("This is an error", Exception); 
+0

你確認使用像將procmon工具Sysinternals公司的,它不是一個權限問題與WCF的應用程序試圖寫入到您的桌面? – CodeMonkey1313

+0

問題可能在於你已經定義了配置部分,當配置在它自己的文件中時,這是不必要的。在調試模式下使用log4net和'運行,並檢查輸出窗口是否有問題。 – stuartd

+0

謝謝大家!我添加調試模式,並檢查輸出窗口,這似乎是一個錯誤,但它給了我一個工作指南.. 我會告訴你,如果我有任何進一步的問題。 – user3100144

回答

2

我以前有這個問題;嘗試將以下代碼行添加到服務啓動中。

XmlConfigurator.Configure(); 

它是log4net.Config命名空間的一部分。

+0

使用程序集屬性時沒有必要使用 – stuartd

+0

謝謝艾倫! 我只是嘗試,但它不會記錄任何東西 – user3100144

+0

嗯......奇怪的是,它創建的文件和什麼都不寫;因爲我見過的唯一的其他問題是由於Windows服務運行時的帳戶權限所致。但是如果它創建文件,那麼它必須有權限。我在我的一個地方嘗試過日誌級別「ALL」,並且它工作正常。你可以嘗試記錄到c:\ TEMP \,看看是否有所作爲? –