2012-08-27 112 views
1

我正在使用Log4Net在我的Web應用程序中記錄異常。Log4net配置錯誤

在這裏,我已經找到一個例子配置:http://www.csharptocsharp.com/log4net-configuration-for-rockin-loggin

<?xml version="1.0"?> 

<configuration> 
    <configSections> 
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> 
    </configSections> 

    <log4net> 
    <!-- 
    This writes the log information to the console window. It only logs events 
    that are at least at the INFO level (which would mean that DEBUG events are not 
    captured. 
    --> 
    <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> 
    <!-- 
    This stores information in the log.txt file. It only captures log events 
    that contain the key word test or error. 
    --> 
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
      <file value="L:\Name\trunk\Name.Web\log.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="FATAL"/> 
     <appender-ref ref="RollingFileAppender"/> 
    </root> 
    <logger name="Log4NetTest.OtherClass"> 
     <level value="DEBUG"/> 
     <appender-ref ref="ConsoleAppender"/> 
    </logger> 
    </log4net> 


</configuration> 

在我的課,我有:

protected static readonly ILog log = LogManager.GetLogger(typeof(TemplateController)); 

,並在我的方法,我有:

log4net.Config.XmlConfigurator.Configure(); 

       //————————– 
       log.Error("sadi the great"); 
       log.Info("sadi the great"); 

但我有錯誤:

enter image description here

+0

請發表你的實際配置文件的全部內容。您顯示的分數(?)肯定是無效的XML。另請注意,原因實際上顯示在屏幕上(「根元素丟失」)。 –

+0

我已更新我的問題 – revolutionkpi

+0

您的配置文件中並沒有真正的'保護靜態只讀ILog log = Log ...'部分,是嗎? –

回答

3

用於滾動文件附加目的地有效的配置是這樣的:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
    </configSections> 
    <log4net> 
     <appender name="RollingFile" type="log4net.Appender.RollingFileAppender"> 
      <file value="logger.log" /> 
      <appendToFile value="true" /> 
      <maximumFileSize value="100KB" /> 
      <maxSizeRollBackups value="2" /> 
      <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date %logger [%thread] [%ndc] (%file:%line) %level- %message%newline"/> 
      </layout> 
     </appender> 

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

,你應該改變你的目標框架」 .NET框架4" (默認情況下它是在我的情況不同) 檢查這將是一個有用的

+0

有沒有錯誤? – Prasad

+0

仍然有這個錯誤 – revolutionkpi

+0

你檢查了你的目標框架? – Prasad

0

確保您已[assembly: log4net.Config.XmlConfigurator]在AssemblyInfo.cs中所列

我發現不增加該行的一切應用耳朵與Log4Net一起工作,但沒有記錄。

-Edit-

這是我的Log4Net配置。我使用彩色控制檯appender,以及滾動文件appender。

<log4net> 
     <appender name="Console" type="log4net.Appender.ColoredConsoleAppender"> 

      <mapping> 
       <level value="INFO" /> 
       <foreColor value="Green,HighIntensity"/> 
      </mapping> 

      <mapping> 
       <level value="DEBUG" /> 
       <foreColor value="Cyan,HighIntensity"/> 
      </mapping> 

      <mapping> 
       <level value="WARN" /> 
       <foreColor value="Purple,HighIntensity"/> 
      </mapping> 

      <mapping> 
       <level value="ERROR" /> 
       <foreColor value="Red,HighIntensity"/> 
      </mapping> 

      <mapping> 
       <level value="FATAL" /> 
       <foreColor value="Yellow,HighIntensity"/> 
      </mapping> 

      <layout type="log4net.Layout.PatternLayout"> 
       <!-- Pattern to output the caller's file name and line number --> 
       <conversionPattern value="%date,%5level,(%file:%line),%message%newline" /> 
      </layout> 
     </appender> 

     <appender name="RollingFile" type="log4net.Appender.RollingFileAppender"> 
      <file value="LOG.csv" /> 
      <appendToFile value="true" /> 
      <maximumFileSize value="1024MB" /> 
      <rollingStyle value="Date" /> 
      <datePattern value="yyyyMMdd" /> 

      <layout type="log4net.Layout.PatternLayout"> 
       <conversionPattern value="%date,%5level,(%file:%line),%message%newline" /> 
      </layout> 
     </appender> 

     <root> 
      <level value="DEBUG" /> 
      <appender-ref ref="Console" /> 
      <appender-ref ref="RollingFile" /> 
     </root> 
    </log4net> 

要特別注意我的根元素是如何列出的 - 我認爲你的配置文件問題可能在那裏。

試試我的配置,看看它是否適合你。如果它仍然不起作用,還有其他問題需要解決。

+0

這是不正確的,我從來沒有經歷過,它無處記載如此 –

+0

@AmitMittal請參閱:http://stackoverflow.com/questions/3898218/log4net-not-working其中Kirk Woll指出:「這種類型的一個問題是確保通過在AssemblyInfo.cs中放置以下行來將XmlConfigurator屬性添加到程序集: '[assembly: log4net.Config.XmlConfigurator]' 否則log4net永遠不會激活。「它已經爲我工作了,同時這也是33個贊同的答案。我想我可以說這是正確的。 –

+0

我試試這個,但我的日誌文件仍然是空的 – revolutionkpi

1

在AppConfig的文件中使用

<log4net debug="true"> 
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender"> 
    <layout type="log4net.Layout.XMLLayout" /> 
    <param name="File" value="BackgroundCheckLog/BackgroundCheckLog.log" /> 
    <param name="AppendToFile" value="true" /> 
    <param name="maximumFileSize" value="1000KB" /> 
    <param name="maxSizeRollBaenter code here`ckups" value="-1" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <header type="log4net.Util.PatternString" value="[START LOG] %newline" /> 
    <footer type="log4net.Util.PatternString" value="[END LOG] %newline" /> 
    <conversionPattern value="%d [%t] %-5p (%file:%line) - %m%n" /> 
    </layout> 
</appender> 
<root> 
    <level value="ALL" /> 
    <appender-ref ref="RollingFile" /> 
</root> 

protected static readonly ILog log = LogManager.GetLogger(typeof(TemplateController)); 

使用

internal static ILog log = LogManager.GetLogger(typeof(TemplateController)); 
+0

日誌文件仍然是空的,我不明白我在做什麼錯 – revolutionkpi

+0

IN 更改值字段其中「 BackgroundCheckLog「這是你的當前目錄,」BackgroundCheckLog.log「是文件名設置這些,並嘗試這個工作完美的我 – user1622434