C# Log4net一些配置(DEBUGINFOERROR等级过滤)

tech2024-03-23  65

前言

为什么要打日志

因为我们需要知道代码内部的运行状态,快速定位运行情况。为什么需要规范日志? 希望在规范化后,提高日志的可读性,方便终端查询,及后续用日志分析工具才会变得更加方便。

安装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> <!--错误日志类--> <!--信息日志类--> <!--Debug日志类--> <root> <level value="ALL" /> <appender-ref ref="InfoAppender" /> <appender-ref ref="ErrorAppender"/> <appender-ref ref="DebugAppender"/> </root> <!--错误日志附加介质--> <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"> <!-- name属性指定其名称,type则是log4net.Appender命名空间的一个类的名称,意思是,指定使用哪种介质--> <param name="File" value="Log\\LogError\\" /> <!--日志输出到exe程序这个相对目录下--> <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&quot;.htm&quot;" /> <!--日志文件名--> <param name="RollingStyle" value="Date" /> <!-- 等级过滤 只需要ERROR等级的LOG --> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="ERROR"/> <levelMax value="ERROR"/> </filter> <!--文件创建的方式,这里是以Date方式创建--> <!--错误日志布局--> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n异常时间:%d [%t] &lt;BR&gt;%n异常级别:%-5p &lt;BR&gt;%n异 常 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" /> </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&quot;.htm&quot;" /> <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="&lt;HR COLOR=blue&gt;%n日志时间:%d [%t] &lt;BR&gt;%n日志级别:%-5p &lt;BR&gt;%n日 志 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" /> </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&quot;.htm&quot;" /> <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="&lt;HR COLOR=green&gt;%n日志时间:%d [%t] &lt;BR&gt;%n日志级别:%-5p &lt;BR&gt;%n日 志 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" /> </layout> </appender> </log4net> </configuration>

生成文件目录

生成的三种不同HTML样式

最新回复(0)