一、log4net 有四种主要的组件:
1、Logger(记录器)
2、Repository(库)
3、Appender(附着器)
4、Layout(布局)
*Logger:
主要用于记录日志的分类和控制日志的级别.它可以以多种格式输出日志信息,同吋它也可以控制日志的输出级别.
*Appender :
这里我们简单称之为“附着器"。意思就是说日志的输出必须依赖于它,更确切的说以文本形式输出,还是控制台格式输出都必须要依靠它来控制。Log4net定义了多种附着器:
(1) AdoNetAppender将日志记录到数据库中.可以采用SQL和存储过程两种方式。
(2) AnsiColorTerminalAppender 在ANSI 窗口终端写下高亮度的日志时间。
(3) AspNetTraceAppender 能用asp.net中Trace的方式查看记录的日志。
(4) BufferingForwardingAppender 在输出到子Appenders之前先缓存日志事件。
(5) ConsoleAppender 将日志输出到控制台。
(6) EventLogAppender 将日志写到Windows Event Log。
(7) FileAppender 将日志写到邮件中。
(8) MemoryAppender将日志存到内存缓冲区.
(9) NetSendAppender 将日志输出到Windows Messenger service , 这些日志信息将在用户终端的对话框中显示
(10) RemoteSyslogAppender 通过UDP网络协议将日志写到Remote syslog service.
(11) RemotingAppender 通过.NET Remoting将日志写到远程接收端。
(12) RollingFileAppender 将日志以回滚文件的形式写到文件中
(13) SmtpAppender 将日志写到邮件中
(14) TraceAppender 将日志写到.NET trace 系统
(15) UdpAppender 将日志connectionless UDP datagrams的形式送到远程宿主或以UdpClient的形式广播
*Filter:
Appender是将日志以缺省值的方式输出,意思就是按照默认值的方式输出。而Filter 意思就是过滤器,使用Filter可以将日志以不同格式来输出。
*Layout:
这个用于控制日志输出显示格式。
Log4net的日志对象管理器LogManager : LogManager是用于来管理所有的Logger对象的,GetLogger()可以用来查找已经存在的Logger对象,如果对
象不存在它会自动创建一个Logger对象,并且管理它。
PatternLayout ,用户自定义格式,
内置参数如下
%m(message),输出的日志消息
%n(newline),换行
%d(datetime),输出当前语句运行的时刻
%r(runtime),输出程序从运行到当前语句时消耗的毫秒数
%t(thread id),输出当前语句运行的线程ID
%p(priority): 日志的当前日志级别
%c(class),输出当前语句所在的对象名称
%M(method),输出当前语句所在的方法名称
%f(file),输出当前语句所在的文件名称
%L(line),输出当前语句位于所在的文件中的行号
%l(location),输出当前语句位于的全限定类名,以及源文件和行号
%数字,表示该项的最小长度,如果不够则在左边用空格填充。如:%5p,表示输出日志级别,且长度最小为5个字符
%-数字,表示该项的最小长度,如果不够则在右边用空格填充。如:%-5p,表示输出日志级别,且长度最小为5个字符
%.数字,表示该项的最大长度,如果超出则截断
%数字.数字,表示该项的必须位于最小和最大长度之间,如果超出则截断, 不够则用空格填充
最佳实践: %-d{yyyy-MM-dd HH:mm:ss} [%L] [%c]-[%p] %m%n
Appender Filter
作用:默认情况下Appender对象会将所有日志信息都输出到相应的介质中,通过Appender Filter对象(命令空间:log4net.Filter)可以按照不同的标准过滤日志事件或内容。
内置的Filter组件:
DenyAllFilter ,阻止所有的日志事件被记录
LevelMatchFilter ,只有指定等级的日志事件才被记录
LevelRangeFilter ,日志等级在指定范围内的事件才被记录
LoggerMatchFilter , Logger名称匹配才被记录
PropertyFilter ,消息匹配指定的属性值才被记录
StringMatchFilter ,消息匹配指定的字符串才被记录
二、log4net日志在项目中的使用:
1.通过Nuget安装Log4net程序包
(根据自己的需求选择版本)
2.添加配置文件,配置日志记录的格式等信息
log4net.config配置信息如下:
这个是我最近做的短视频项目的log4net.config配置信息
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections> <log4net> <!--数据日志--> <appender name="InfoRollingFileAppender" type="log4net.Appender.RollingFileAppender"> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <param name="File" value="Log\Info\" /> <param name="AppendToFile" value="true" /> <param name="rollingStyle" value="Date" /> <param name="datePattern" value="yyyy-MM-dd.'Info.log'" /> <param name="staticLogFileName" value="false" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="记录时间:%date %n日志级别:%-5level %n记录类:%logger%n记录描述:%message%n%n" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="INFO" /> <param name="LevelMax" value="INFO" /> </filter> </appender> <!--错误日志--> <appender name="ErrorRollingFileAppender" type="log4net.Appender.RollingFileAppender"> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <param name="File" value="Log\Error\" /> <param name="AppendToFile" value="true" /> <param name="rollingStyle" value="Date" /> <param name="datePattern" value="yyyy-MM-dd.'error.log'" /> <param name="staticLogFileName" value="false" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="记录时间:%date %n日志级别:%-5level %n出错类:%logger%n错误描述:%message%n%n" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="ERROR" /> <param name="LevelMax" value="ERROR" /> </filter> </appender> <!--调试日志--> <appender name="DebugRollingFileAppender" type="log4net.Appender.RollingFileAppender"> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <param name="File" value="Log\Debug\" /> <param name="AppendToFile" value="true" /> <param name="rollingStyle" value="Date" /> <param name="datePattern" value="yyyy-MM-dd.'debug.log'" /> <param name="staticLogFileName" value="false" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="记录时间:%date %n日志级别:%-5level %n调试类:%logger%n日志描述:%message%n%n" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="DEBUG" /> <param name="LevelMax" value="DEBUG" /> </filter> </appender> <root> <level value="DEBUG" /> <!--文件形式记录日志--> <appender-ref ref="ErrorRollingFileAppender" /> <appender-ref ref="DebugRollingFileAppender" /> <appender-ref ref="InfoRollingFileAppender" /> </root> </log4net> </configuration>
3.封装自定义字段传值所需要的方法
首先在项目中创建App_Code文件夹,用于存放相关帮助类的代码。
在SyncVideosJob.cs 中调用
using引用:
namespace Log4net
{
class Program
{
static void Main(string[] args)
{
InitLog4Net();
}
}
}
4、 Log4Net日志级别
Log4net分为如下几个级别:
FATAL 毁灭级别
ERROR 错误级别
WARN 警告级别
INFO 消息级别
DEBUG 调试级别
这几种日志级别高低: FATAL> ERROR> WARN > INFO > DEBUG.
只有日志输出级别大于或等于配置的级别才能输出日志信息。
比如我的日志配置级别为INFO ,那么只有log.Info(), log.Warm(), log.Error(), log.Fatal()才 能输出日志信息, Debug方式就不能输出。
Log4net中还有两种特殊的配置级别: ALL -允许所q有的日志级别输出,OFF -拒绝所有的日志级别输出。
以上是我了解的log4net日志,还有很多不足,想要深入了解可以参考其他资深博主的博客
标签:log4net,输出,Filter,语句,NET,级别,日志 From: https://www.cnblogs.com/zhaibingchai/p/16796649.html