前言
为什么要打日志
因为我们需要知道代码内部的运行状态,快速定位运行情况。为什么需要规范日志?
希望在规范化后,提高日志的可读性,方便终端查询,及后续用日志分析工具才会变得更加方便。
安装log4net
** NuGet程序包下载;网络资源下载 **
** 引用添加 **
配置
新增行并告诉工程在使用log4net时,需要在哪一配置文件下寻找
在Properties下的AssemblyInfo.cs 中填写:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]
新增log4net.config相关配置文件
新建log4net.config文件,并将属性"复制到输出目录"修改为"如果较新则复制"
相关配置描述:
日志等级以及日志级别遮蔽
控制级别,由【低】到【高】:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF,ALL最低。
一般地,所有的需要读配置的文件都要描述在<configuration> 标签内,
直接把原有的App.config中的拷贝过来就行了。要什么样的配置直接书写就可以。
需求配置文件描述
1.我们平时最常用的日志打印有三种,分别是 : DEBUG级、INFO级、ERROR级;其中最主要的是ERROR级;
2.**目前我需要对当日所跑的程序进行LOG日志记录**,记录在一个总的文件加内,并分别使用三个文件夹用以区分。
使用 “等级过滤” --- filiter标签;ALL写在<ROOT>中,表示三种等级都能接收向上到(因为是最下级,所以向下检测不到),
在<appender>最后面加Fileter过滤,通过Filter过滤,只记录等级范围为INFO到ERROR;
3.LOG日志文件使用*.htm描述,三种常用等级用不同颜色来区分: R : ERROR、G : DEBUG、B : INFO
4.因为我需求是需要为每一个业务类产生的需求日志都需要记录在案,
有可能是DEBUG的,有可能是INFO的,也有可能是ERROR的 --- : 不使用<logger>标签
配置文件实现
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="InfoAppender" />
<appender-ref ref="ErrorAppender"/>
<appender-ref ref="DebugAppender"/>
</root>
<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".htm"" />
<param name="RollingStyle" value="Date" />
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR"/>
<levelMax value="ERROR"/>
</filter>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="<HR COLOR=red>%n异常时间:%d [%t] <BR>%n异常级别:%-5p <BR>%n异 常 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>" />
</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".htm"" />
<param name="RollingStyle" value="Date" />
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO"/>
<levelMax value="INFO"/>
</filter>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="<HR COLOR=blue>%n日志时间:%d [%t] <BR>%n日志级别:%-5p <BR>%n日 志 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>" />
</layout>
</appender>
<appender name="DebugAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\\LogDebug\\" />
<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".htm"" />
<param name="RollingStyle" value="Date" />
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="DEBUG"/>
<levelMax value="DEBUG"/>
</filter>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="<HR COLOR=green>%n日志时间:%d [%t] <BR>%n日志级别:%-5p <BR>%n日 志 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>" />
</layout>
</appender>
</log4net>
</configuration>
生成文件目录
生成的三种不同HTML样式