2015-12-13 120 views
3

我使用log4net爲了創建日誌,但它什麼也不做。Log4net - 不創建日誌文件

這裏是app.config

<?xml version="1.0" encoding="utf-8"> 
<configuration> 
    <configSection> 
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
    </configSection> 
    <log4net> 
     <appender name="WriteToFile" type="log4net.Appender.FileAppender"> 
      <file value="log.txt" /> 
      <layout ="log4net.Layout.SimpleLayout" /> 
     </appender> 
     <root> 
      <level value="ALL" /> 
      <appender-ref ref="WriteToFile"/> 
     </root> 
    </log4net> 
</configuration> 

我在AssemblyInfo.cs以下行:

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

這是寫入文件的嘗試:

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

public void write() 
{ 
    log.Info("Some text here"); 
} 

而以下行:

log4net.Config.XmlConfigurator.Configure(); 
+0

試試這個,我覺得它對你有幫助。 http://stackoverflow.com/questions/1321261/configuring-log4net-with-xml-file – Brian

+0

你是否在你沒有寫權限的文件夾中運行你的程序? – BeerBaron

回答

3

如果這是一個可執行文件,我想你的配置文件在結果bin文件夾中不是App.config,而是MyApp.exe.config。所以,你可以嘗試修復此:

[assembly: log4net.Config.XmlConfigurator(Watch = true)] 

還要確保你正在運行的應用程序的帳戶已寫:

ConfigFile ="App.config" 

您還可以,如果你使用的是默認跳過配置文件名對您希望寫入日誌文件的文件夾的權限。


UPDATE:

通過步指南:

  1. 創建一個新的控制檯應用程序
  2. 安裝的log4net的NuGet
  3. 使用您的App.config如下:

    <?xml version="1.0" encoding="utf-8"?> 
    <configuration> 
        <configSections> 
         <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
        </configSections> 
        <log4net> 
         <appender name="WriteToFile" type="log4net.Appender.FileAppender"> 
          <file value="log.txt" /> 
          <layout type="log4net.Layout.SimpleLayout" /> 
         </appender> 
         <root> 
          <level value="ALL" /> 
          <appender-ref ref="WriteToFile" /> 
         </root> 
        </log4net> 
    </configuration> 
    
  4. 而在你Program.cs

    using log4net; 
    using System.Reflection; 
    
    [assembly: log4net.Config.XmlConfigurator(Watch = true)] 
    
    namespace ConsoleApplication1 
    { 
        class Program 
        { 
         private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 
    
         static void Main(string[] args) 
         { 
          log.Info("Some text here"); 
         } 
        } 
    } 
    
+0

嘗試了兩種方法,仍然沒有工作:(得到了另一個想法? – Pachu

+0

我已經更新了我的答案,一步一步地指導了一個工作示例。我不太確定它是否是您的文章中的拼寫錯誤,或者您在實際代碼中包含此類錯誤,但是您展示的XML配置文件無效。例如,XML聲明缺少關閉'?',這也是無效的:'',... –

+0

試過,仍然無效 – Pachu

1

我只成功與log4net的,當我跑靜態Configure方法:在閱讀下面的默認配置一個方法

 log4net.Config.XmlConfigurator.Configure(); 

結束語該應用程序,無論是web.config或app.config:

private static void InitLogging() 
    { 
     log4net.Config.XmlConfigurator.Configure(); 
     _logger = Common.Logging.LogManager.GetLogger(typeof(Program)); 
     _logger.Debug("Logging initialized"); 
    } 

你看起來更像一個修飾器屬性,但上面提到的可能值得一試。