2009-08-24 61 views
14

我試圖配置log4net將所有內容記錄到控制檯輸出。我有一個名爲Log4Net.config使用xml文件配置log4net

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
    </configSections> 
    <log4net> 
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" > 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" /> 
     </layout> 
    </appender> 
    <root> 
     <level value="INFO" /> 
     <appender-ref ref="ConsoleAppender" /> 
    </root> 
    </log4net> 
</configuration> 

一個配置文件,我有我的主類(只是一個測試情況下)

namespace TestLog4Net { 
    class Program { 
     private static readonly ILog log = LogManager.GetLogger(typeof(Program)); 

     static void Main(string[] args) { 
      log.Info("Info"); 
      log.Error("Error"); 
      Console.ReadKey(); 
     } 
    } 
} 

我添加這些行到AssemblyInfo.cs

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

但現在沒有已記錄,有人可以解釋這一點嗎?

+0

我得到完全相同的問題。我有類似的實現,但我仍然無法解決問題。你能幫我解決嗎? – Karthikeyan 2011-07-14 05:17:08

+2

確保log4net.config文件在「屬性」中標記爲「複製到輸出」 - >「始終複製」。 – Amit 2014-01-19 21:54:21

回答

18

當您在單獨的配置文件中有log4net配置時,您不應該包含配置和configSections元素。 log4net應該是xml聲明之後的頂層元素。

17

試試這種方法。爲我工作..

string logFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "\\Config\\Log4Net.config"); 
    FileInfo finfo = new FileInfo(logFilePath); 
    log4net.Config.XmlConfigurator.ConfigureAndWatch(finfo); 

我知道很晚回覆。但對某些權利會有用。