2013-04-29 197 views
4

现在Iam出现错误“无法在应用程序的.config文件中找到配置节'log4net'”。这是我在log4net.config文件代码:使用Log4net实现彩色日志

<?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> 

我已经包含在装配此声明:

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

我在我的计划包括以下语句:

protected void Application_start(Object Sender, EventArgs e) 
{ 
    log4net.Config.XmlConfigurator.Configure(); 
} 

我不知道问题是什么。请帮忙。

回答

5

您必须使用自定义模式布局来实现此目的,然后将其连接到log4net.config文件中。 你的代码是这样:

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); 
    } 
} 

在你log4net.config,这丝转换器作为如下。用正确的替换'你的名字空间'。

<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

嗨aquaraga..thanks的答复fast..but我写的日志文件HTML.I是新来这个log4net..Dont感觉不好,如果我问一个愚蠢的问题.. Coloredconsoleappender的意思是它显示在命令提示符下? – Vysakh 2013-04-29 06:58:44

+0

是的你是对的。它在命令提示符中显示它。但是你要编写的自定义appender应该修改一个HTML文件。 – aquaraga 2013-04-29 07:01:22

+0

嗨Aquaraga..this是我写的代码.. 是否确定?而运行过程中出现不创建一个file..Before它创建一个日志文件.. – Vysakh 2013-04-29 07:02:12