Achieving coloured logs using Log4net
·
Answer a question
Now Iam getting error "failed to find configuration section 'log4net' in the application's .config file". This is my code in log4net.config file:
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<root>
<level Value="Info"/>
<level Value="Error"/>
<appender-ref ref="ColoredFileAppender" />
</root>
<appender name="ColoredFileAppender" type="log4net.Appender.RollingFileAppender" >
<file type="log4net.Util.PatternString"/>
<file value="C:\CL2.html" />
<encoding value="utf-8" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<appendToFile value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%CC" />
<converter>
<name value="CC" />
<type value="Cluster2.ColoredMessageConverter" />
</converter>
<mapping>
<level value="Info" />
<foreColor value="Green" />
</mapping>
<mapping>
<level value="ERROR" />
<backColor value="Red, HighIntensity" />
</mapping>
</layout>
</appender>
</configuration>
</log4net>
I have included this statement in the assembly:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
I have included this statement in my program:
protected void Application_start(Object Sender, EventArgs e)
{
log4net.Config.XmlConfigurator.Configure();
}
I'm having no idea of what is the issue. Please help.
Answers
You have to use custom pattern layout to achieve this, and then wire it up in your log4net.config file. Your code would look like:
public class ColoredMessageConverter : PatternLayoutConverter
{
protected override void Convert(TextWriter writer, LoggingEvent loggingEvent)
{
string color = "";
switch (loggingEvent.Level.Name)
{
case "DEBUG":
color = "green";
break;
case "WARN":
case "INFO":
color = "white";
break;
case "ERROR":
color = "pink";
break;
case "FATAL":
color = "red";
break;
}
string logToRender = string.Format(" <p style='color:{0}'>{1}</p>", color, loggingEvent.RenderedMessage);
//Add logToRender to file
writer.Write(logToRender);
}
}
In your log4net.config, wire this converter as given below. Replace the 'Your namespace' with the correct one.
<log4net>
<root>
<level value="DEBUG" />
<appender-ref ref="ColoredFileAppender" />
</root>
<appender name="ColoredFileAppender" type="log4net.Appender.RollingFileAppender" >
<file type="log4net.Util.PatternString" value="c:\test.html" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%CC" />
<converter>
<name value="CC" />
<type value="<<Your namespace>>.ColoredMessageConverter" />
</converter>
</layout>
</appender>
更多推荐

所有评论(0)