2013-07-29 123 views
0

我有一個小的控制檯應用程序,它指的是一個庫項目。我正在嘗試使用log4net記錄可能的錯誤。它在我打電話時有效Log.Debug(myErrorMsg)來自主項目,但是當我嘗試從庫項目中做同樣的事情時,它什麼都不寫。你能告訴一下這可能是什麼原因嗎?Log4net不記錄

在我的app.config:

<configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> 
</configSections> 
<log4net> 
    <root> 
     <appender-ref ref="LogFileAppender" /> 
    </root> 
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" > 
     <param name="File" value="C:\MyProject\bin\Debug\log.txt" /> 
     <param name="AppendToFile" value="true" /> 
     <rollingStyle value="Size" /> 
     <maxSizeRollBackups value="10" /> 
     <maximumFileSize value="10MB" /> 
     <staticLogFileName value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <param name="ConversionPattern" value="%-5p%d{yyyy-MM-dd hh:mm:ss} – %m%n" /> 
     </layout> 
    </appender> 
</log4net> 

在我的主要():

XmlConfigurator.Configure(); 

在我的DLL項目:

internal static readonly ILog Log = LogManager.GetLogger(typeof(FileWatcherLogic)); 

...

catch (Exception ex) 
{ 
    var msg = string.Format("Error handling file {0}: {1}", fullPath, ex.Message); 
    Console.Write(msg); 
    Log.Error(msg); 
} 

謝謝。

回答

1

看起來你錯過了<root>聲明中的<level>元素來告訴log4net要記錄哪些日誌級別。

是否將您當前的根改爲修復您的問題?

<root> 
    <level value="ALL" /> <!-- or "DEBUG", "WARN", "INFO", etc --> 
    <appender-ref ref="LogFileAppender" /> 
</root> 

另外,如果還是不行 - 你可以在這個關鍵在你的<appSettings>添加到您的應用程序或web.config中度日log4net的寫入控制檯確切地告訴你什麼是錯的詳細調試信息:

<add key="log4net.Internal.Debug" value="true"/> 
+0

不,不幸的是,它沒有幫助。 –

+0

@DavidShochet嘗試添加上面的鍵我剛剛添加到我的問題並重新運行您的程序。你應該看到爲什麼log4net無法正確加載。 –

+2

謝謝。由於這個調試功能,我發現log4net與NServiceBus衝突。 –