2012-07-19 64 views
6

我試圖設置Log4Net(這是我第一次使用Log4Net)登錄到程序集中的文本文件。我沒有收到任何錯誤,但它也不起作用。我可以斷開記錄我的輸出的行,並看到它們已經到達,但就像我說沒有任何反應。設置Log4Net記錄類庫中的輸出

我哪裏錯了?

我加入以下我packages.config文件時,<packages>屬性中:

<log4net> 
    <appender name="FileAppender" type="log4net.Appender.FileAppender,log4net"> 
     <file value="c:\CTI\log.txt" /> 
     <appendToFile value="true" /> 
     <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %level %logger - %message%newline" /> 
     </layout> 
     <filter type="log4net.Filter.LevelRangeFilter"> 
     <levelMin value="INFO" /> 
     <levelMax value="FATAL" /> 
     </filter> 
    </appender> 

    <root> 
     <level value="DEBUG"/> 
     <appender-ref ref="FileAppender"/> 
    </root> 
    </log4net> 
</configuration> 

我加入以下行AssemblyInfo.cs

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

我添加使用的NuGet和log4net的集會我的日誌記錄如下:

private log4net.ILog _Log; 
_Log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 
_Log.Debug("FooBar"); 

就像我說的,沒有錯誤,但沒有任何反應。

我錯過了什麼?

回答

6

有一件事是錯誤的是,您將log4net配置節添加到nuget配置文件(packages.config)。

您可以在app/web配置中或在appSettings指向的單獨文件中進行配置,例如, 配置是在一個名爲config.log4net(該文件的copy to output directory屬性設置爲copy always)文件,並添加在app/web.config中輸入以下內容:

<add key="log4net.config" value="config.log4net"/> 

如果你不想依賴於網絡/應用程序的配置,可以設置XmlConfiguratorAttribute屬性的ConfigFileExtension財產AssemblyInfo.cs

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

然後將其命名log4net的配置文件與您的EXE /裝配和所配置的擴展名,例如MyApplication.exe.log4netMyLibrary.dll.log4net

另一個錯誤的是你的appender過濾器。您設置的範圍不包括您期望記錄的DEBUG級別。這裏是所有logging levels

ALL 
DEBUG 
INFO 
WARN 
ERROR 
FATAL 
OFF 

正如你所看到的,DEBUGINFOFATAL之間。