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

2023-11-16

等级说明:

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>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • Kotlin协程实现原理:CoroutineScope,看完不懂你砍我!墙裂建议收藏。

    今天我们来聊聊Kotlin的协程Coroutine 文末有为大家准备的彩蛋 如果你还没有接触过协程 推荐你先阅读这篇入门级文章What 你还不知道Kotlin Coroutine 如果你已经接触过协程 相信你都有过以下几个疑问 协程到底是个
  • 一个码稿人自述:什么样的文档产品适合我?|深度吐槽

    关注ITValue 看企业级最新鲜 最价值报道 图片来源 Unsplash 钛媒体打工人 媒体相关从业经验4 5年 文档使用重度患者 今天以我曾经用过的 和现在主流的一些文档产品为例 来谈谈我的使用体验 以及什么样的文档适合我 一 我与文档
  • [编程工具]MarkDown编辑查看以及使用语法

    目录 0 前言 1 markDown语法 2 markDown 3 MD正确打开方式 4 结尾 结束啦感谢观看 5 参考连接 0 前言 本文介绍了markDown的编辑查看 使用浏览器查看以及Vscode中查看编辑MD 最后介绍了MD的常用
  • python解析佳明fit文件

    使用 fitparse 解析 佳明 fit 文件 以下示例测试环境为 python 3 8 fitparse 1 2 fitparse 安装 pip3 install fitparse 使用方式 import fitparse from d
  • 蓝牙通讯

    蓝牙通讯 简介 蓝牙API 所需权限 使用蓝牙的步骤 普通调用案例 通讯案例 简介 蓝牙 是一种支持设备短距离通信 一般10m内 且无阻隔媒介 的无线电技术 能在包括移动电话 PDA 无线耳机 笔记本电脑等众多设备之间进行无线信息交换 利用
  • 数据库创建索引和删除索引的方式总结

    一 创建索引 1 1 使用Alter创建索引 1 添加主键索引 特点 数据列不允许重复 不能为null 一张表只能有一个主键 Mysql主动将该字段进行排序 ALTER TABLE 表名 ADD Primary key col 2 添加唯一
  • MySQL安装与启动

    1 MySQL安装包下载 下载地址 https dev mysql com downloads mysql 这里我的电脑是WIN764位的 大家根据自己的电脑自己选择要下载的包 2 解压安装 解压后进入到Windows的DOS命令行下 切换
  • python股票量化交易系统_利用python建立股票量化交易系统(一)

    从今天开始正式开启我的博客之旅 博客内容全部是我自己的量化心得 主要还是为自己将来中工作之中遇到相似问题 可以方便的找到答案 如果能帮到有相似问题的其他同学 我也很开心 如果帮不到的话 不喜勿喷 如果文章中有什么不对的地方 欢迎批评指正 建
  • VI编辑器的使用常用快捷方式编辑命令

    VI编辑器的使用常用快捷方式编辑命令 一 VI编辑器的工作模式 1 VI编辑器有以下三种工作模式 命令模式 输入模式 末行模式 2 不同模式之间的切换 外链图片转存失败 源站可能有防盗链机制 建议将图片保存下来直接上传 img 7BrI0o
  • 【LInux】基础开发工具的使用

    文章目录 一 Linux的应用市场 yum 1 什么是yum 2 为什么要有yum 3 如何使用yum 3 1 前提条件 3 2 搜索软件 3 3 安装软件 3 4 卸载软件 二 Linux的文本编辑器 vim 1 什么是vim 2 为什么
  • Java中的线程

    一 程序 进程 线程之间的关系 程序 进程和线程是计算机中重要的概念 它们描述了不同层次上的执行和管理方式 程序是指由一系列指令组成的代码文件 它定义了算法和逻辑 用来解决特定的问题 程序本身是静态的 只有在被加载到内存并被操作系统调度执行
  • SSM框架(Spring+SpringMVC+MyBatis)

    SSM Spring SpringMVC MyBatis 框架集由Spring SpringMVC MyBatis三个开源框架整合而成 常作为数据源较简单的web项目的框架 Spring是一个开源框架 Spring是于2003 年兴起的一个
  • 思科CISCO常用命令汇总

    视图模式介绍 1 普通视图router gt 2 特权视图router 在普通模式下输入enable 3 全局视图router config 在特权模式下输入configt 4 接口视图router config if 在全局模式下输入in
  • ASN.1的一些理解

    为什么要有ASN 1这个东西 我们知道 像C Java这种高级语言 对于计算机来说都要转化为二进制代码才能识别和操作 这就涉及到序列化和反序列化这两个概念 将一个对象序列化成二进制代码 就可以保存成文本或者利用网络传输到远程 与序列化相对的
  • 2021-02-23(亚马逊服务存储桶)

    亚马逊云服务器测试情况 需要外网 国际 才能登录 网址 https 956438185477 signin aws amazon com console 国际短信的话 在右上角区域区域选择弗吉尼亚北部 左边选择sms短信服务 视频加速要用到
  • 13.openssl编程——ASN1库

    13 1 ASN1 简介 ANS 1 Abstract Syntax Notation One X 208 是一套灵活的标记语言 他允许定义多种数据类型 从integer bit string 一类的简单类型到结构化类型 如set和sequ
  • LeetCode-链表中倒数第k个节点

    单链表只能从前往后遍历 所以 我们可以先计算出链表长度 倒数第k个节点相当于正数第n k 1个节点 然后我们再从头往后找 找到第n k 1个节点就可以了 while循环版 Definition for singly linked list
  • Semaphore 源码分析

    需要提前了解的知识点 AbstractQueuedSynchronizer 实现原理 类介绍 Semaphore 信号量 是用来控制同时访问特定资源的线程数量 它通过协调各个线程 以保证合理的使用公共资源 比如控制用户的访问量 同一时刻只允
  • cesium+vue-cli安装步骤

    1 依赖node所以先安装node 可从官网下载安装 安装一直下一步最后选安装目录 2 win r输入cmd运行 先输入node v和npm v查看node安装是否正常 我这里node是10 5 0 npm是6 1 0 3 安装vue np
  • Log4net等级说明以及按照不同级别写入多个日志文件

    等级说明 Level级别 DEBUG