2013-11-03 83 views
-1

我想在我的應用程序在C#中使用log4net。配置log4net

我爲log4net的配置文件:ConsoleTest.exe.log4net,並在屬性選項設置複製到目標文件夾:

<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{ABSOLUTE} [%thread] %level %logger - %message%newlineExtra Info: %property{testProperty}%newline%exception" /> 
     </layout> 
     <filter type="log4net.Filter.LevelRangeFilter"> 
      <levelMin value="INFO" /> 
      <levelMax value="FATAL" /> 
     </filter> 
    </appender> 
    <appender name="TraceAppender" type="log4net.Appender.TraceAppender"> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%d [%t] %-5p %c %m%n"/> 
     </layout> 
    </appender> 
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="mylogfile.txt"/> 
    <appendToFile value="true"/> 
    <rollingStyle value="Size"/> 
    <maxSizeRollBackups value="5"/> 
    <maximumFileSize value="10MB"/> 
    <staticLogFileName value="true"/> 
    <filter type="log4net.Filter.StringMatchFilter"> 
    <stringToMatch value="test"/> 
    </filter> 
    <filter type="log4net.Filter.StringMatchFilter"> 
    <stringToMatch value="error"/> 
    </filter> 
    <filter type="log4net.Filter.DenyAllFilter"/> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date [%thread] %level %logger - %message%newline%exception"/> 
    </layout> 
</appender> 
    <root> 
     <level value="INFO"/> 
     <appender-ref ref="RollingFileAppender"/> 
    </root> 
    <logger name="Log4NetTest.OtherClass"> 
     <level value="DEBUG"/> 
     <appender-ref ref="RollingFileAppender"/> 
    </logger> 
</log4net> 

在Visual Studio 2012,在性能項目,在文件AssemblyInfo.cs我說:

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

在課堂上,我想記錄我說:

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

但是當我在這個類寫:

log.Debug("This is a DEBUG level message. The most VERBOSE level."); 
log.Info("Extended information, with higher importance than the Debug call"); 
log.Warn("An unexpected but recoverable situation occurred"); 

我不明白,在輸出:(

哪裏出了問題什麼?

編輯: 我的配置文件是否正確?

+4

http://meta.stackexchange.com/questions/10647/how-do-i-write-a-good-title –

+1

我寫了[此文檔](https://docs.google.com/document/ d/1v8fycyEc2JYdcHQ2tgVd_RH6aJySwoAC4Ug_pgNzqIE/edit?usp = sharing)關於如何設置您可能會覺得有用的Log4Net。 – madman1969

回答

1

你是什麼意思與「產出」?

是否創建了日誌文件?您的過濾器會排除所有不包含'test'或'error'的日誌記錄,但應該創建一個零長度的文件。刪除過濾器元素來解決這個問題。

您的控制檯和跟蹤記錄器將不會使用此配置接收任何內容。如果您想查看控制檯輸出,請將< appender-ref ref =「ConsoleLogger」/ >添加到您的根元素。

不是一個錯誤,但是當使用單獨的文件進行log4net配置時,您只需要log4net部分。還要檢查基礎知識:您的配置文件是構建輸出的一部分嗎?

+0

「output」在Visul Studio中的意思窗口。好吧,我現在延長了,我必須在根元素中添加''。非常感謝 :) – kuba44

0

你打開了日誌? 我們有以下線在我們的Global.asax

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

我沒有'Global.asax'文件:(我加入'AssemblyInfo.cs'文件,它看起來類似於: '[assembly:log4net.Config.XmlConfigurator( ConfigFile =「ConsoleTest.exe.log4net」 ,Watch = true)]' – kuba44

1
<filter type="log4net.Filter.StringMatchFilter"> 
    <stringToMatch value="test"/> 
</filter> 
<filter type="log4net.Filter.StringMatchFilter"> 
    <stringToMatch value="error"/> 
    </filter> 
<filter type="log4net.Filter.DenyAllFilter"/> 

這些線意味着你將只記錄包含兩種測試錯誤消息。

您還看起來缺少配置的結束標記。