log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具。
使用log4net,一个很明显的好处是可以提供多种等级的记录信息,通过配置可以在开发的不同阶段处理不同的记录信息,比.NET自带的Debug/Trace两个级别要丰富的多。
一.配置文件
(1)麻烦自行百度log4net的dll文件,然后添加引用。
如上,第一个就是Log4net。
(2)在assemblyInfo.cs里添加下面这句:
[assembly: log4net.Config.DOMConfigurator(Watch = true)]
在app.config里添加配置信息,如下(注意格式,startup放最后):
<configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net-net-1.0"/> </configSections> <log4net> <logger name="logerror"> <level value="Error" /> <appender-ref ref="ErrorAppender" /> </logger> <logger name="loginfo"> <level value="INFO" /> <appender-ref ref="InfoAppender" /> </logger> <logger name="logdebug"> <level value="DEBUG" /> <appender-ref ref="DebugAppender" /> </logger> <appender name="DebugAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="Log\\LogDebug\\" /> <param name="AppendToFile" value="true" /> <param name="MaxSizeRollBackups" value="100" /> <param name="MaxFileSize" value="10240" /> <param name="StaticLogFileName" value="false" /> <param name="DatePattern" value="yyyyMMdd".txt"" /> <param name="RollingStyle" value="Date" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="<调试>%m 时间:%d [%t] ;%n" /> </layout> </appender> <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="Log\\LogError\\" /> <param name="AppendToFile" value="true" /> <param name="MaxSizeRollBackups" value="100" /> <param name="MaxFileSize" value="10240" /> <param name="StaticLogFileName" value="false" /> <param name="DatePattern" value="yyyyMMdd".txt"" /> <param name="RollingStyle" value="Date" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="<异常>%m 时间:%d [%t] ;%n" /> </layout> </appender> <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="Log\\LogInfo\\" /> <param name="AppendToFile" value="true" /> <param name="MaxFileSize" value="10240" /> <param name="MaxSizeRollBackups" value="100" /> <param name="StaticLogFileName" value="false" /> <param name="DatePattern" value="yyyyMMdd".txt"" /> <param name="RollingStyle" value="Date" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%n<正常><时间:>%d %m[%t];%n" /> </layout> </appender> </log4net> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> </configuration>
configurations写的是log4net版本信息。
log4net内分别写了Error DeBug Info三个级别的配置信息,log4net内含7个级别的log信息
(1)OFF (2)FATAL (3)ERROR (4)WARN (5)INFO (6)DEBUG (7)ALL (级别是从高到低)
配置信息的解释:
<appender name="DebugAppender" type="log4net.Appender.RollingFileAppender"> //日志的路径 <param name="File" value="Log\\LogDebug\\" /> //是否在文件中追加文件 <param name="AppendToFile" value="true" /> //最大变换数量 <param name="MaxSizeRollBackups" value="100" /> //文件最大大小 <param name="MaxFileSize" value="10240" /> //日志文件名是否为静态 <param name="StaticLogFileName" value="false" /> //文件名称命名 <param name="DatePattern" value="yyyyMMdd".txt"" /> //按照文件的Data进行变换日志文件 <param name="RollingStyle" value="Date" /> //log输入内容(可以根据需求自行设置) <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="<调试>%m 时间:%d [%t] ;%n" /> </layout> </appender>
二.实例化log4net类
public class Log4netManager { public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo"); public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror"); public static readonly log4net.ILog logdebug = log4net.LogManager.GetLogger("logdebug"); /// <summary> /// 输出正常运行信息 /// </summary> /// <param name="info"></param> public static void WriteInfo(string info) { if (loginfo.IsInfoEnabled) { loginfo.Info(info); } } /// <summary> /// 输出异常运行信息 /// </summary> /// <param name="info"></param> public static void WriteError(string info) { if (logerror.IsErrorEnabled) { logerror.Error(info); } } /// <summary> /// 输出调试信息 /// </summary> /// <param name="info"></param> public static void WriteDebug(string info) { if (logdebug.IsDebugEnabled) { logerror.Debug(info); } } }
三.输出
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); Log4netManager.WriteError("error"); Log4netManager.WriteDebug("debug"); Log4netManager.WriteInfo("info"); } }
四.打开文件所在位置
即可,见到该输出文件