Logback-spring.xml日志配置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/csxypr/article/details/85218319

log日志

  最近小咸儿一直在潜心学习,发现很多有感日志的配置不是很懂,所以特地查询了一些资料学习一下,然后总结下来。

主要参考材料:https://www.cnblogs.com/leecong/p/5776970.html

  首先小咸儿最近接触的项目是spring cloud的框架,所以也特地去看看了自己项目中日志的配置。

logback是如何加载配置的呢?

1、logback会先去查找logback.groovy文件
2、如果没有找到的话,会继续查找logback-test.xml文件
3、如果没有找到logback-test.xml文件,继续查找logback.xml文件
4、还没有找到的话,就会使用默认配置(打印到控制台了)

configuration:

  configuration是配置文件的根节点,它包含的属性:

  • Scan
       当此属性设置为true时,配置文件如果发生改变,将会被重新加载。默认为true时
  • scanPeriod
      设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。但scan为true时,此属性生效,默认的时间间隔为1分钟
  • Debug
      当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态,默认值为false
    在这里插入图片描述

Appender

  appender是负责写日志的组件,常用的组件有:

  • Encoder:对日志进行格式化
  • Target:System.out或者System.err,默认是System.out

  小咸儿在自己项目里找了找设置,发现没有有关ConsoleAppender这个节点,但是发现了一些其他有意思的事情,那就是p6spy
在这里插入图片描述
在这里插入图片描述
  小咸儿百度之后才知道:

  P6Spy 是针对数据库访问操作的动态监测框架(为开源项目,项目首页:www.p6spy.com)它使得数据库数据可无缝截取和操纵,而不必对现有应用程序的代码作任何修改。P6Spy 分发包包括P6Log,它是一个可记录任何 Java 应用程序的所有JDBC事务的应用程序。其配置完成使用时,可以进行数据访问性能的监测。

  可以看出来它的功能真的是很强大啊!

  在这里遇到,也是表明它具体标签的作用:

  输出格式:
在这里插入图片描述
  输出info文件并且过滤掉error日志:
在这里插入图片描述

  在这里又认识到了几个新的节点,但是还有其他的节点也顺便认识一下吧!

FileAppender

  在这里又认识到了几个新的节点,但是还有其他的节点也顺便认识一下吧!

  • file:被写入的文件名,可以是相对路径,也可以是绝对路径。如果上级目录不存在会自动创建,没有默认值
  • append:如果是true,日志被追加到文件结尾;如果是false,清空现存文件,默认是true
  • encoder:格式化
  • v prudent:如果是true,日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作,效率低,默认是false

RollingFileAppender

  滚动记录文件日志组件,先将日志记录记录到指定文件,当符合某个条件时,将日志记录到其他文件,该组件有一下节点:

  • file:文件名
  • encoder:格式化
  • rollingPolicy:当发生滚动时,决定RollingFileAppender的行为,涉及文件移动和重命名
  • triggeringPolicy:告知RollingFileAppender合适激活滚动
  • prudent:当为true时,不支持FixedWindowRollingPolicy。支持TimeBasedRollingPolicy,但是有两个限制,一是不支持也不允许文件压缩,二是不能设置file属性,必须留空

rollingPolicy(滚动策略)

  • TimeBasedRollingPolicy:最常用的滚动策略,它根据时间来制定滚动策略,即负责滚动也负责触发滚动,包含节点:

    • fileNamePattern:文件名模式
    • maxHirouy:控制文件的最大数量,超过数量则删除旧文件
  • FixedWindowRollingPolicy:根据固定窗口算法重命名文件的滚动策略,包含节点:

    • minIndex:窗口索引最小值
    • maxIndex:串口索引最大值,当用户指定的窗口过大时,会自动将窗口设置为12
    • fileNamePattern:文件名模式,必须包含%i,命令模式为log%i.log,会产生log1.log,log2.log这样的文件
  • triggeringPolicy:根据文件大小的滚动策略,包含节点:

    • maxFileSize:日志文件最大的大小
      在这里插入图片描述

filter过滤器

  过滤器是用于日志组件中的,每经过一个过滤器都会返回一个确切的枚举值,分别是

  • DENY:返回DENY,日志将立即被抛弃不再经过其他过滤器
  • NEUTRAL:有序列表的下个过滤器接着处理日志
  • ACCEPT:日志会被立即处理,不再经过剩余过滤器

常用过滤器
常用的过滤器有以下:

  • LevelFilter
    级别过滤器,根据日志级别进行过滤。如果日志级别等于配置级别,过滤器会根据omMatch和omMismatch接受或拒绝日志。他有以下节点:

    • level:过滤级别
    • onMatch:配置符合过滤条件的操作条件
    • onMismatch:配置不符合过滤条件的操作

  目前小咸儿项目中使用就是levelFileter过滤器:
在这里插入图片描述

  接下来的两种都是小咸儿第一次见,所以特地总结下来。

  • ThresholdFilter
      临界值过滤器,过滤掉低于指定临界值的日志。当日志级别等于或高于临界值时,过滤器会返回NEUTRAL;当日志级别低于临界值时,日志会被拒绝。

  • EvaluatorFilter
      求值过滤器,评估、鉴别日志是否符合指定条件,包含节点:

    • evaluator:鉴别器,通过子标签expression配置求值条件
    • onMatch:配置符合过滤条件的操作
    • onMismatch:配置不符合过滤条件的操作

  日志在小咸儿做项目的时候真的感觉十分重要,因为日志配置的不同,对于开发人员来说,能够轻松的将自己需要的东西,明确的打印出来也能够提高开发效率。

猜你喜欢

转载自blog.csdn.net/csxypr/article/details/85218319