Reputation: 2682
I am using Log4Net to log exceptions in my web application.
Here I have found an example for a configuration: 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>
In my class I have:
protected static readonly ILog log = LogManager.GetLogger(typeof(TemplateController));
and in my method I have:
log4net.Config.XmlConfigurator.Configure();
//————————–
log.Error("sadi the great");
log.Info("sadi the great");
but I have got error:
Upvotes: 2
Views: 23088
Reputation: 77
In AppConfig file use
<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));
use
internal static ILog log = LogManager.GetLogger(typeof(TemplateController));
Upvotes: 1
Reputation: 11730
Make sure you have [assembly: log4net.Config.XmlConfigurator]
listed in AssemblyInfo.cs
I have found without adding that line everything appears to work with Log4Net but nothing gets logged.
-Edit-
This is my Log4Net config. I use a colored console appender, as well as a rolling file 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>
Pay special attention to how my root element is listed - I think your config file issue may be there.
Try my config and see if it works for you. If it still does not work there are other issues that need to be addressed.
Upvotes: 0
Reputation: 154
A working configuration for Rolling File appender is like this:
<?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>
and you should change your target framework to ".net framework 4" (by default it is different in my case) check this one will be useful
Upvotes: 5