SpringBoot日志

2020-05-01  本文已影响0人  小杨小杨神采飞杨

springboot使用SLF4J+logback的组合

  1. 使用SLF4J


    各种组合需要导入的jar

SLF4J是一个日志接口门面,负责实现不同日志实现类,一起工作,而不同的日志实现类需要不同的配置文件,使用时应当根据使用的日志实现类配置与之对应的配置文件

  1. 转接包
    当一个项目有很多框架时,不同的框架底层的日志实现是不同的,如何统一的设置为SLF4J+logback?


    转接包

    可以使用jcl-over-slf4j.jar替换commons logging API(spring底层使用的日志),jcl-over-slf4j.jar内部有commons logging API的全部功能,这样spring底层调用时不会报错,但是日志真正的实现被偷天换日的替换成了SLF4J+logback
    总结:如何让系统中所有日志统一到slf4j
    1、将系统中原有的其他日志框架排除
    2、使用中间包代替原有的日至框架
    3、导入slf4j的其他实现

  1. springboot的日志关系
    日志关系
    总结:
    1、springboot底层使用的SLF4J+logback进行日志记录
    2、springboot把其他日志都替换成了SLF4J
    3、引入了很多中间包,中间包内有对应的日志框架的完整jar包,但是在使用时会调用slf4j工厂类,最后返回的是slf4j的实现
    4、如果引入其他框架,一定要移除他的日志依赖!!

springboot能自动适配所有日志,而且底层使用SLF4J+logback的方式记录日志,我们只需要在引入其他框架的时候,把这个框架依赖的日志框架排除掉即可

排除
  1. 配置与使用
    1、配置:springboot默认已经配置好了日志!!
    2、使用:
    使用slf4j的日志工厂创建日志对象
    slf4j的日志工厂
    日志的优先级从低到高依次为 trace<debug<info<warn<error
    通过设置可以只输出对应优先级以上的日志信息
    springboot默认设置的优先级是info,即只会输出info级别以上的日志信息
    默认级别为info
    通过在配置文件中设置可以针对特定的包下的类调整优先级
logging.level.cn.yzx=trace #设置cn.yzx包下的类运行时日志信息级别为trace
调整优先级为trace
通过在配置文件中设置可以将日志信息输出到文件中,不指定路径则默认输出在项目根路径下,指定则输出到指定路径下,有两种方式,path是输出到指定文件夹,日志文件名称为springboot默认的spring.log,这个方法已经被弃用了,file可以指定文件夹以及日志文件的名称,该方法也被弃用了
两种方式
在spring2.0之后,使用logging.file.属性名来设置日志文件信息
logging.file.
name和path功能重复,且两个都设置的话只有name会生效,name可以指定路径以及日志文件的名称,不指定路径默认在项目根路径下输出
设置
测试结果

通过在配置文件中设置可以调整日志在控制台中输出的格式,也可以调整日志输出到日志文件中的格式

#设置日志控制台输出格式
logging.pattern.console=%d{DATE}, %d{ABSOLUTE}, %d{HH:mm:ss,SSS}
##设置日志文件输出格式
logging.pattern.file=%d{DATE}, %d{ABSOLUTE}, %d{HH:mm:ss,SSS}

补充:
1、日志输出格式

日志输出格式
2、使用自己的日志框架配置
在类路径(resources)下放上每个日志框架的配置文件,springboot就不会使用默认的配置文件了
命名规则
springboot建议能带上-spring的标签都带上,这样表示这个配置文件通过springboot生效,就可以使用高级功能profile,根据不同的开发环境输出不同格式的日志
例如logback的配置文件,如果不加-spring,默认就是logback的配置文件,而logback日志是不支持这个功能的,加了就可以使用
设置
3、切换日志框架:排除原先的,引入要用的
上一篇下一篇

猜你喜欢

热点阅读