2012-08-27 105 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