• log4j2配置详细


    名词解释

    Loggers节点,常见的有两种:Root和Logger。

    Root节点用来指定项目的根日志,如果没有单独指定Logger,那么就会默认使用该Root日志输出

    Root:每个配置都必须有一个根记录器Root。如果未配置,则将使用默认根LoggerConfig,其级别为ERROR且附加了Console appender。根记录器和其他记录器之间的主要区别是:1.根记录器没有name属性。2.根记录器不支持additivity属性,因为它没有父级。

    level:日志输出级别,共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF
    AppenderRef:Root的子节点,用来指定该日志输出到哪个Appender.
    

    Logger:Logger节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等。

    使用Logger元素必须有一个name属性,root logger不用name元属性
    每个Logger可以使用TRACE,DEBUG,INFO,WARN,ERROR,ALL或OFF之一配置级别。如果未指定级别,则默认为ERROR。可以为additivity属性分配值true或false。如果省略该属性,则将使用默认值true。

    Logger还可以配置一个或多个AppenderRef属性。引用的每个appender将与指定的Logger关联。如果在Logger上配置了多个appender,则在处理日志记录事件时会调用每个appender。

    • name:用来指定该Logger所适用的类或者类所在的包全路径,继承自Root节点。一般是项目包名或者框架的包名,比如:com.jourwon,org.springframework

    • level:日志输出级别,共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF

    • AppenderRef:Logger的子节点,用来指定该日志输出到哪个Appender,如果没有指定,就会默认继承自Root。如果指定了,那么会在指定的这个Appender和Root的Appender中都会输出,此时我们可以设置Logger的additivity="false"只在自定义的Appender中进行输出。

    Appenders:是输出源,用于定义日志输出的地方。log4j2支持的输出源有很多,有控制台ConsoleAppender、文件FileAppender、AsyncAppender、RandomAccessFileAppender、RollingFileAppender、RollingRandomAccessFile 等 常见的有:

    ConsoleAppender

    控制台输出源是将日志打印到控制台上,开发的时候一般都会配置,以便调试。

    name:指定Appender的名字。
    target:SYSTEM_OUT 或 SYSTEM_ERR,一般只设置默认:SYSTEM_OUT。
    PatternLayout:输出格式,不设置默认为:%m%n。
    

    AsyncAppender

    异步输出。AsyncAppender接受对其他Appender的引用,并使LogEvents在单独的Thread上写入它们。
    默认情况下,AsyncAppender使用 java.util.concurrent.ArrayBlockingQueue ,它不需要任何外部库。请注意,多线程应用程序在使用此appender时应小心:阻塞队列容易受到锁争用的影响,并且我们的 测试 表明,当更多线程同时记录时性能可能会变差。考虑使用无锁异步记录器以获得最佳性能。

    FileAppender

    文件输出源,用于将日志写入到指定的文件,其底层是一个OutputStreamAppender,需要配置输入到哪个位置(例如:D:/logs/mylog.log)

    name:指定Appender的名字。
    fileName:指定输出日志的目的文件带全路径的文件名。
    PatternLayout:输出格式,不设置默认为:%m%n。
    

    RollingFileAppender

    RollingFileAppender是一个OutputStreamAppender,它写入fileName参数中指定的File,并根据TriggeringPolicy和RolloverPolicy滚动文件。

    RollingFileAppender是一个OutputStreamAppender,它写入fileName参数中指定的File,并根据TriggeringPolicy和RolloverPolicy滚动文件。

    RollingRandomAccessFile: 该输出源也是写入到文件,不同的是比File更加强大,可以指定当文件达到一定大小(如20MB)时,另起一个文件继续写入日志,另起一个文件就涉及到新文件的名字命名规则,因此需要配置文件命名规则。这种方式更加实用,因为你不可能一直往一个文件中写,如果一直写,文件过大,打开就会卡死,也不便于查找日志。

    • name:指定Appender的名字。
    • fileName 指定当前日志文件的位置和文件名称
    • filePattern 指定当发生Rolling时,文件的转移和重命名规则
    • immediateFlush 设置为true时 - 默认值,每次写入后都会进行刷新。这将保证数据写入磁盘,但可能会影响性能。
    • bufferSize 缓冲区大小,默认为262,144字节(256 * 1024)。
    • Policies:指定滚动日志的策略,就是什么时候进行新建日志文件输出日志。
    • SizeBasedTriggeringPolicy 指定当文件大小大于size指定的值时,触发Rolling
    • TimeBasedTriggeringPolicy 这个配置需要和filePattern结合使用,日期格式精确到哪一位,interval也精确到哪一个单位。注意filePattern中配置的文件重命名规则是${FILE_NAME}-%d{yyyy-MM-dd HH-mm-ss}-%i,最小的时间粒度是ss,即秒钟。TimeBasedTriggeringPolicy默认的size是1,结合起来就是每1秒钟生成一个新文件。如果改成%d{yyyy-MM-dd HH},最小粒度为小时,则每一个小时生成一个文件
    • DefaultRolloverStrategy 指定最多保存的文件个数

    Log4j2官网doc
    Log4j2的Loggers配置详解
    Log4j2的Loggers配置详解

  • 相关阅读:
    activiti基础二
    activiti基础一
    sql中between包含边界值吗?
    Mybatis遍历list,Array,map
    元祖变成字符串 || 字符串中替换部分字符串 || enumberate可以找到字符串,列表,元祖的的索引和值 || zip的用法 || 判断变量的类型
    py怎样建立模块和怎样导入模块
    怎样判断变量是数组?
    oracle中字符串连接用||
    将对象的所有属性名放到一个数组中 || 获得对象的所有属性名 || return;不具有原子性 || 怎样自己制作异常|| 判断对象有没有某个属性 || 当传递的参数比需要的参数少的时候,没有的值会被赋予undefined || 获得函数实际传递的参数 || 怎么用函数处理一个对象 || 用一个名字空间定义一个模块所有的函数 || 给一个对象添加方法
    Bootstrap-table 相关参数
  • 原文地址:https://www.cnblogs.com/leifonlyone/p/15056075.html
Copyright © 2020-2023  润新知