概述
一个功能著名的开源日志记录组件,各语言都有相应实现版本。C#下的log4Net,Java下的log4j,C的log4c,C++的log4cxx,QT的log4QT。不过还是Log4j和Log4Net比较常用。这里针对Log4Net做介绍。
该日志系统官网: https://logging.apache.org/
Log4Net 简单的引用实例
第一步:在项目中添加对log4net.dll的引用
1.直接lib引用: https://logging.apache.org/log4net/download_log4net.cgi;
2.VS NuGet引入log4net(推荐)。
第二步:程序启动时读取log4net的配置文件。
a) CS程序,在根目录的Program.cs中的Main方法中添加:
log4net.Config.XmlConfigurator.Configure();
b) Web程序,在根目录的Global.asax.cs(没有新建一个)中的Application_Start方法中添加:
log4net.Config.XmlConfigurator.Configure();
c) 无论BS还是CS程序都可直接在项目的AssemblyInfo.cs文件里添加以下的语句:
[assembly: log4net.Config .XmlConfigurator()]
//自定义配置文件 ConfigFile :配置名;Watch:监听
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4net.config", Watch = true)])
d)无论BS还是CS程序都可直接在项目的配置文件 web.config/app.config 配置:
<configSections><!--节点里添加:-->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
<configSections>
<appSettings><!--节点里添加:-->
<!--log4net配置文件-->
<add key="log4net.Config" value="Log4net.config"/>
<!--是否启用log4net监听-->
<add key="log4net.Config.Watch" value="True"/>
</appSettings>
配置简要说明:
首先是声明配置
四个不同的log配置,可对应四个不同的log级别
<appender-ref ref="InfoLog" />
<appender-ref ref="WarnLog" />
<appender-ref ref="ErrorLog" />
<appender-ref ref="DebugLog" />
这里的ref的值对应下方<appender>节点的name,<appender>节点里面就是详细配置
appender主要注意配置的有:
1.路径:
<param name="File" value="Logs\\Info\\" />
2.log文件名:
<param name="DatePattern" value="yyyyMMdd'_Info.log'" />
3.log内容 && 输出内容格式 :
内容
<param name="ConversionPattern" value="%n日志时间:%d [%t] %n日志级别:%-5p %n日 志 类:%c [%L] %n%m %n" />
输出内容格式
%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息
%n(new line):换行
%d(datetime):输出当前语句运行的时刻
%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数
%t(thread id):当前语句所在的线程ID
%p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等
%c(class):当前日志对象的名称,例如:
-模式字符串为:%-10c -%m%n
-代码为:
ILog log=LogManager.GetLogger(“Exam.Log”);
log.Debug(“Hello”);
-则输出为下面的形式:
Exam.Log - Hello
%L:输出语句所在的行号
%F:输出语句所在的文件名
%-数字:表示该项的最小长度,如果不够,则用空格填充
4、 对应的级别: 区间(LevelRangeFilter)、单级别(晚点补):
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<levelMax value="INFO" />
</filter>
完整的配置文件代码如下:
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<root>
<level value="ALL"/>
<!--根据log级别记录到不同的日志文件-->
<appender-ref ref="InfoLog" />
<appender-ref ref="WarnLog" />
<appender-ref ref="ErrorLog" />
<appender-ref ref="DebugLog" />
</root>
<!--Info日志配置-->
<appender name="InfoLog" type="log4net.Appender.RollingFileAppender">
<!--Info保存路径-->
<param name="File" value="Logs\\Info\\" />
<param name="AppendToFile" value="true" />
<param name="MaxFileSize" value="10240" />
<param name="MaxSizeRollBackups" value="100" />
<param name="StaticLogFileName" value="false" />
<!--Info日志名-->
<param name="DatePattern" value="yyyyMMdd'_Info.log'" />
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<!--Log内容-->
<param name="ConversionPattern" value="%n日志时间:%d [%t] %n日志级别:%-5p %n日 志 类:%c [%L] %n%m %n" />
</layout>
<!--本文件记录日志 级别区间-->
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<levelMax value="INFO" />
</filter>
</appender>
<!--Warn日志配置-->
<appender name="WarnLog" type="log4net.Appender.RollingFileAppender">
<!--Warn保存路径-->
<param name="File" value="Logs\\Warn\\" />
<param name="AppendToFile" value="true" />
<param name="MaxFileSize" value="10240" />
<param name="MaxSizeRollBackups" value="100" />
<param name="StaticLogFileName" value="false" />
<!--Warn日志名-->
<param name="DatePattern" value="yyyyMMdd_Warn'.log'" />
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<!--Log内容-->
<param name="ConversionPattern" value="%n日志时间:%d [%t] %n日志级别:%-5p %n日 志 类:%c [%L] %n%m %n" />
</layout>
<!--本文件记录日志 级别区间-->
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="WARN" />
<levelMax value="WARN" />
</filter>
</appender>
<!--Error日志配置-->
<appender name="ErrorLog" type="log4net.Appender.RollingFileAppender">
<!--Error保存路径-->
<param name="File" value="Logs\\Error\\" />
<param name="AppendToFile" value="true" />
<param name="MaxFileSize" value="10240" />
<param name="MaxSizeRollBackups" value="100" />
<param name="StaticLogFileName" value="false" />
<!--Error日志名-->
<param name="DatePattern" value="yyyyMMdd_Error'.log'" />
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<!--Log内容-->
<param name="ConversionPattern" value="%n日志时间:%d [%t] %n日志级别:%-5p %n日 志 类:%c [%L] %n%m %n" />
</layout>
<!--本文件记录日志 级别区间-->
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
<levelMax value="ERROR" />
</filter>
</appender>
<!--Debug日志配置-->
<appender name="DebugLog" type="log4net.Appender.RollingFileAppender">
<!--Debug保存路径-->
<param name="File" value="Logs\\Debug\\" />
<param name="AppendToFile" value="true" />
<param name="MaxFileSize" value="10240" />
<param name="MaxSizeRollBackups" value="100" />
<param name="StaticLogFileName" value="false" />
<!--Debug日志名-->
<param name="DatePattern" value="yyyyMMdd'_Debug.log'" />
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<!--Log内容-->
<param name="ConversionPattern" value="%n日志时间:%d [%t] %n日志级别:%-5p %n日 志 类:%c [%L] %n%m %n" />
</layout>
<!--本文件记录日志 级别区间-->
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="DEBUG" />
<levelMax value="DEBUG" />
</filter>
</appender>
</log4net>
</configuration>