Logback

简介

概述

  • Logback是由Log4j创始人设计的又一个开源日志框架。
  • Logback当前分成三个模块:logback-core、logback-classic和logback-access。其中,logback-core是其他两个模块的基础模块。
  • logback-classic是log4j的一个改良版本。此外,logback-classic完整实现Slf4j API,使得我们可以很方便地更换成其它日志系统如log4j或JDK14 Logging。
  • logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能。

logback取代log4j的理由

  • 更快的实现    logback的内核重写了,在一些关键执行路径上性能提升10倍以上,而且logback不仅性能提升了,初始化内存加载也更小了。
  • 非常充分的测试
  • logback-classic非常自然地实现了Slf4j
  • 非常充分的文档
  • 自动重写加载配置文件    当配置文件修改了,logback-classic能自动重新加载配置文件。扫描过程快且安全,它并不需要另外创建一个扫描线程。这个技术充分保证了应用程序能在JEE环境里面跑得很快。
  • Lilith    Lilith是log事件的观察者,能处理大量的log数据。
  • 谨慎模式和非常友好的恢复    在谨慎模式下,多个FileAppender实例跑在多个JVM下,能够安全地写到同一个日志文件。RollingFileAppender会有些限制。logback的FileAppender和它的子类包括RollingFileAppender能够非常友好地从I/O异常中恢复。
  • 配置文件可以处理不同的情况    开发人员经常需要判断不同的logback配置文件在不同的环境下(开发、测试、生产)。而这些配置文件仅仅只有一些很小的不同,可以通过,来实现,这样一个配置文件就可以适应多个环境。
  • Filter    有些时候,需要诊断一个问题,需要打出日志。在log4j,只有降低日志级别,不过这样会打出大量的日志,会影响应用性能。在logback,可以继续保持原来的日志级别而除掉某种特殊情况,如alice这个用户登录,她的日志将打在debug级别而其他用户可以继续打在warn级别。
  • SiftingAppender(一个非常多功能的Appender)    它可以根据任何一个给定的运行参数来分割日志文件。例如,SiftingAppender能够区别日志事件更进用户的Session,然后每个用户会有一个日志文件。
  • 自动压缩已经打出来的log    RollingFileAppender在产生新文件的时候,会自动压缩已经打出来的日志文件。压缩是一个异步过程,所有对于大的日志文件,在压缩过程中,应用不会受任何影响。
  • 堆栈树带有包版本    logback在打出堆栈树日志时,会带上包的数据。
  • 自动去除旧的日志文件    logback可以通过设置属性,控制已经产生日志文件的最大数量,超过限制要求的log文件都会被自动移除。

简单的日志配置

Spring Boot内部使用Commons Logging来记录日志,但也保留外部接口可以让一些日志框架来进行实现。例如,Java Util Logging,Log4j 2以及Logback。如果想要使用某一种日志框架来进行实现的话,就必须先配置,默认情况下,Spring Boot使用Logback作为日志实现的框架。

配置控制台日志的debug级别

默认情况下,Spring Boot从控制台打印出来的日志级别只有ERROR、WARN和INFO,如果想要打印debug级别的日志,可以通过application.properties配置debug=true

debug=true
application.properties

在生产环境下,可以通过命令进行配置日志的debug级别

java -jar C:\Users\Administrator\Desktop\xx\demo.jar --debug
命令行

配置logging.level.*来具体输出哪些包的日志级别

logging.level.root=INFO
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR
application.properties

将日志输出到文件中

默认情况下,Spring Boot是不将日志输出到日志文件中,但可以通过在application.properties文件中配置logging.file文件名称和logging.path文件路径,将日志输出到文件中

logging.path=F:\\demo
logging.file=demo.log
logging.level.root=info
application.properties

注意:

  • 若这里不配置具体的包的日志级别,日志文件信息将为空。
  • 若只配置logging.path,那么将会在F:\demo文件夹下生成一个日志文件为spring.log(该文件名是固定的,不能更改)。
  • 如果logging.path路径不存在,就会自动创建该文件夹。

Logback的配置介绍

Logger、appender、layout

  • Logger作为日志的记录器,把它关联到应用的对应的context上后,主要用于存放日志对象,也可以定义日志类型、级别。
  • Appender主要用于指定日志输出的目的地,目的地可以是控制台、文件、远程套接字服务器、MySQL、PostreSQL、Oracle和其他数据库、JMS和远程UNIX Syslog守护进程等。
  • Layout负责把事件转换成字符串,格式化的日志信息的输出。

logger context

  • 各个logger都被关联到一个LoggerContext,LoggerContext负责制造logger,也负责以树结构排列各logger。其他所有logger也通过org.slf4j.LoggerFactory类的静态方法getLogger取得。getLogger方法以logger名称为参数。用同一的名字调用LoggerFactory.getLogger方法所得到的永远都是同一个logger对象的引用。

有效级别及级别继承

  • Logger可以被分配级别。级别包括:TRACE、DEBUG、INFO、WARN和ERROR,定义于ch.qos.logback.classic.Level类。
  • 如果logger没有被分配级别,那么它将从有被分配级别的最近祖先那里继承级别。root logger默认级别是DEBUG。

打印方法与基本的选择规则

  • 打印方法决定记录请求的级别。例如,如果logger是一个Logger实例,那么语句logger.info("...")是一条级别为INFO的记录语句。记录请求的级别高于或等于其logger的有效解绑时被称为被启用。否则,称为被禁用。
  • 该规则是logback的核心,级别的排序为TRACE<DEBUG<INFO<WARN<ERROR。

转载于:https://www.cnblogs.com/HNewa/p/Spring_Boot_Logging_Logback.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值