有的时候我们需要在日志中根据不同级别产生的日志生成不同的日志文件,利用log4我们可以做到这一点。并且可以实现按天来记录文件。
实现过程主要是利用日志级别来做到的。
请看如下的appender即可以明白:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<root>
<level value="All" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="ErrorFileAppender"/>
</root>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" LEVEL="INFO">
<param name="File" value="log_info.txt"/>
<param name="AppendToFile" value="true"/>
<param name="DatePattern" value="-yyyy.MM.dd"/>
<param name="RollingStyle" value="Date"/>
<param name="StaticLogFileName" value="false"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="## %d [%t] %-5p %x %m %n"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="INFO" />
<param name="LevelMax" value="INFO" />
</filter>
</appender>
<appender name="ErrorFileAppender" type="log4net.Appender.RollingFileAppender" LEVEL="ERROR">
<param name="File" value="log_error.txt"/>
<param name="AppendToFile" value="true"/>
<param name="DatePattern" value="-yyyy.MM.dd"/>
<param name="RollingStyle" value="Date"/>
<param name="StaticLogFileName" value="false"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="## %d [%t] %-5p %x %m %n"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="ERROR" />
<param name="LevelMax" value="ERROR" />
</filter>
</appender>
</log4net>
</configuration>
我们在代码中记录ERROR和INFO级别的日志就会分别记录到两个不同的文件里。
log4net.ILog log = log4net.LogManager.GetLogger("MyLogger");
log.Debug("Debug");
log.Error("Error");
log.Fatal("Fatal");
log.Info("Info");
log.Warn("Warn");
log4net.ILog log2 = log4net.LogManager.GetLogger("MyLogger2");
log2.Debug("Debug2");
log2.Error("Error2");
log2.Fatal("Fatal2");
log2.Info("Info2");
log2.Warn("Warn2");
具体的执行结果大家可以尝试。很简单~