博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Logback-spring.xml日志配置
阅读量:2516 次
发布时间:2019-05-11

本文共 2513 字,大约阅读时间需要 8 分钟。

文章目录

log日志

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

主要参考材料:

  首先小咸儿最近接触的项目是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 是针对数据库访问操作的动态监测框架(为开源项目,项目首页:)它使得数据库数据可无缝截取和操纵,而不必对现有应用程序的代码作任何修改。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:配置不符合过滤条件的操作

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

转载地址:http://ucerb.baihongyu.com/

你可能感兴趣的文章
PCB布线技巧
查看>>
关于PCB设计中过孔能否打在焊盘上的两种观点
查看>>
PCB反推理念
查看>>
京东技术架构(一)构建亿级前端读服务
查看>>
php 解决json_encode中文UNICODE转码问题
查看>>
LNMP 安装 thinkcmf提示404not found
查看>>
PHP empty、isset、innull的区别
查看>>
apache+nginx 实现动静分离
查看>>
通过Navicat远程连接MySQL配置
查看>>
phpstorm开发工具的设置用法
查看>>
Linux 系统挂载数据盘
查看>>
Git基础(三)--常见错误及解决方案
查看>>
Git(四) - 分支管理
查看>>
PHP Curl发送数据
查看>>
HTTP协议
查看>>
HTTPS
查看>>
git add . git add -u git add -A区别
查看>>
apache下虚拟域名配置
查看>>
session和cookie区别与联系
查看>>
PHP 实现笛卡尔积
查看>>