Log4net等级说明以及按照不同级别写入多个日志文件

2024-05-08 11:18

本文主要是介绍Log4net等级说明以及按照不同级别写入多个日志文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

等级说明:

Level级别:DEBUG <INFO<WARN<ERROR<FATAL

    <root><level value="INFO"/><appender-ref ref="RollingLogFileAppender"/><appender-ref ref="ColoredConsoleAppender"/></root>
上述的RollingLogFileAppender是是能够捕获到INFO,WARN,ERROR,FATAL四个级别的信息,如果没有特殊设置,是会将该四个级别的信息全部写入日志。这会使得日志很大,在查找日志时变得很不方便,那么如何将按照不同级别将日志写入多个日志文件呢?
关键在于使用“RollingFileTracer”参数设置过滤
现引入一篇博文,出自:
http://www.cnblogs.com/Fred_Xu/archive/2012/02/08/Configure-Log4net-to-write-to-multiple-files-by-level.html
如下:
在一个Web应用项目中,我使用了Fluent NHibernate作为数据访问组件,Log4net来做日志记录。实际编码中,主要使用了INFO和ERROR这两个等级来记录日志,如果按照以下Log4net配置:<root><level value="ALL"/><appender-ref ref="RollingFile"/><appender-ref ref="RollingFileTracer"/>
</root>log4net会把INFO和ERROR的日志记录到同一个日志文件里,Fluent NHibernate的INFO日志会大量存在于该日志文件中,这样一来对日后分析错误日志带来非常之不便,所以就想能不能单独把ERROR级的错误日志记录到一个特定的日志文件里。于是开始尝试各种配置来实现这个需要,<root>标签不支持多个<level>,也就没法通过在<root>中配置多个不同级别的日志输入,通过查阅Log4net文档,找到了<Filter>这个标记,配置如下:复制代码
<configSections><section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/></configSections><log4net><!--http://logging.apache.org/log4net/release/sdk/log4net.Layout.PatternLayout.html--><appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"><layout type="log4net.Layout.PatternLayout"><conversionPattern value="[%p %t] [%date{yyyy-MM-dd HH:mm:ss,fff}] %-5l - %m%n"/></layout></appender><appender name="RollingFile" type="log4net.Appender.RollingFileAppender"><file value="App_Data/log.log"/><appendToFile value="true"/><maximumFileSize value="5000KB"/><maxSizeRollBackups value="500"/><CountDirection value="1"/><RollingStyle value="Size"/><layout type="log4net.Layout.PatternLayout"><conversionPattern value="[%p %t] [%date{yyyy-MM-dd HH:mm:ss,fff}] %-5logger - %m%n"/></layout></appender><appender name="RollingFileTracer" type="log4net.Appender.RollingFileAppender"><file value="App_Data/Trace.log"/><appendToFile value="true"/><maximumFileSize value="5000KB"/><maxSizeRollBackups value="500"/><CountDirection value="1"/><RollingStyle value="Size"/><layout type="log4net.Layout.PatternLayout"><conversionPattern value="[%p] %m%n"/></layout><filter type="log4net.Filter.LevelRangeFilter"><levelMin value="ERROR" /><levelMax value="FATAL" /></filter></appender><root><level value="ALL"/><appender-ref ref="RollingFile"/><appender-ref ref="RollingFileTracer"/></root></log4net>
复制代码
我们可以看到“RollingFileTracer”中我们通过Filter过滤,只记录范围为ERROR到FATAL,然后在<root>增加该appender,level设置为“ALL”记录所有级别的日志。好了,配置完成,程序实现了记录不同等级的错误信息到多个日志文件。参考:http://stackoverflow.com/questions/1372435/configure-log4net-to-write-to-multiple-files

另附上个人项目中的log4net配置文件,主要功能如下:

1.只纪录错误日志,方便日后错误查找

2.按照不同的颜色在控制台显示不同错误信息方便即时调试

<?xml version="1.0" encoding="utf-8" ?>
<configuration><configSections><section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/></configSections><startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /></startup><log4net><!--定义输出到文件中--><appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"><!--定义文件存放位置--><file value="log\\"/><appendToFile value="true"/><rollingStyle value="Date"/><datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.txt'"/><staticLogFileName value="false"/><!--定义文件最大个数,超过按顺序删除--><param name="MaxSizeRollBackups" value="100"/><lockingModel type="log4net.Appender.FileAppender+MinimalLock" /><maximumFileSize value="1MB" /><filter type="log4net.Filter.LevelRangeFilter"><levelMin value="ERROR" /><levelMax value="FATAL" /></filter><layout type="log4net.Layout.PatternLayout"><!--每条日志末尾的文字说明--><!--输出格式--><!--样例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info--><conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别:  %-5level %n出错类:%logger property: [%property{NDC}] - %n错误描述:%message%newline %n"/></layout></appender><appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender"><mapping><level value="ERROR" /><foreColor value="White" /><backColor value="Red, HighIntensity" /></mapping><mapping><level value="DEBUG" /><backColor value="Green" /></mapping><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /></layout></appender><root><level value="INFO"/><appender-ref ref="RollingLogFileAppender"/><appender-ref ref="ColoredConsoleAppender"/></root></log4net>
</configuration>

这篇关于Log4net等级说明以及按照不同级别写入多个日志文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/970159

相关文章

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

golang 日志log与logrus示例详解

《golang日志log与logrus示例详解》log是Go语言标准库中一个简单的日志库,本文给大家介绍golang日志log与logrus示例详解,感兴趣的朋友一起看看吧... 目录一、Go 标准库 log 详解1. 功能特点2. 常用函数3. 示例代码4. 优势和局限二、第三方库 logrus 详解1.

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语

Nginx指令add_header和proxy_set_header的区别及说明

《Nginx指令add_header和proxy_set_header的区别及说明》:本文主要介绍Nginx指令add_header和proxy_set_header的区别及说明,具有很好的参考价... 目录Nginx指令add_header和proxy_set_header区别如何理解反向代理?proxy

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步

SQL Server清除日志文件ERRORLOG和删除tempdb.mdf

《SQLServer清除日志文件ERRORLOG和删除tempdb.mdf》数据库再使用一段时间后,日志文件会增大,特别是在磁盘容量不足的情况下,更是需要缩减,以下为缩减方法:如果可以停止SQLSe... 目录缩减 ERRORLOG 文件(停止服务后)停止 SQL Server 服务:找到错误日志文件:删除