SpringBoot项目集成日志的实现方法

 更新时间:2019年02月13日 14:35:31   作者:让蛋蛋飞  
这篇文章主要介绍了SpringBoot项目集成日志的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

SpringBoot使用Commons Logging进行所有内部日志记录,但保留底层日志实现。默认提供了Java Util LoggingLog4j2Logback日志配置。在每种情况下,都预先配置为使用控制台输出,并且还提供了可选的文件输出。(来自官网)

日志格式

SpringBoot默认的日志输出如下所示:

2014-03-05 10:57:51.112 INFO 45469 --- [   main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/7.0.52
2014-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]  : Initializing Spring embedded WebApplicationContext
2014-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.s.web.context.ContextLoader   : Root WebApplicationContext: initialization completed in 1358 ms
2014-03-05 10:57:51.698 INFO 45469 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean  : Mapping servlet: 'dispatcherServlet' to [/]
2014-03-05 10:57:51.702 INFO 45469 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]

输出以下项目:

  • 日期和时间:毫秒精度并且容易排序
  • 日志级别:ERROR, WARN, INFO, DEBUG, TRACE
  • 进程ID
  • --- 分隔符来区分实际日志的开始
  • 线程名:括在方括号中(可能会被截断)
  • 日志记录器名:这通常是源类名(通常缩写)
  • 日志信息

Logback中没有FATAL(致命)级别,它被映射到ERROR级别

日志格式 来自 官网

控制台输出

SpringBoot控制台输出默认支持三种日志级别:ERROR,WARN和INFO

如果还想输出别的级别日志,例如DEBUG或TRACE(只能二选一),如下操作:

启动应用程序时,增加--debug或--trace标志

$ java -jar myapp.jar -- debug

说明:使用debug调试模式启动应用程序不会将应用程序配置为使用DEBUG级别记录日志。复制代码

在application.yml中(或application.properties中)增加debug: true或trace: true(或debug=true/trace=true)

application.yml文件:

debug: true

application.properties文件:

debug=true

多彩输出:

如果终端支持ANSI(表示颜色),可以设置彩色输出。

application.yml中设置:

# 检查终端是否支持ANSI,是的话就采用彩色输出
spring:
 output:
 ansi:
  enabled: detect

application.properties中设置:

# 检查终端是否支持ANSI,是的话就采用彩色输出
spring.output.ansi.enabled=detect

文件输出

SpringBoot默认配置日志只会输出到控制台,并不会记录到文件中,但通常生产环境需要把日志记录到文件中。

配置属性如下:

  • logging.file: 设置日志输出文件,绝对路径或相对路径都可以。
  • logging.path: 设置日志输出目录,会在该目录下创建spring.log文件,并写入日志内容。

日志文件在达到10 MB时滚动输出,并且与控制台输出一样,默认情况下会记录ERROR,WARN和INFO级别的日志。可以使用logging.file.max-size属性更改大小限制。除非已设置logging.file.max-history属性,否则以前轮换的日志文件将被无限期归档。(来自官网)

注意点:

日志记录系统在应用程序生命周期的早期初始化。因此,在通过@PropertySource注解加载的属性文件中找不到日志记录属性。

日志记录属性独立于实际的日志记录基础结构。因此,SpringBoot不管理特定的配置密钥(例如Logback的logback.configurationFile)。 (来自官网)

application.yml中设置:

logging:
 # 设置相对路径的日志输出文件
 file: log/my.log
 # 设置日志输出路径,默认会生成log/spring.log日志文件
 path: log
 
logging:
 # 设置绝对路径的日志输出文件
 file: D:\ideaProjects\SpringBootDemo\log1\mylog1.log
 # 设置日志输出路径,默认会生成log/spring.log日志文件
 path: log

application.properties中设置:

logging.file=log/my.log
logging.path=log

级别控制

配置属性格式:logging.level.*=LEVEL

  • logging.level: 日志级别控制前缀,*为包名或Logger名
  • LEVEL: 选项TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF

application.yml中设置:

logging:
 level:
 # com.example.demo包下所有class以DEBUG级别输出
 com.example.demo: DEBUG
 # root日志以INFO级别输出
 root: INFO

说明:
配置日志级别值大小写均可,例如:设置成debug/info

application.properties中设置:

logging.level.com.example.demo=DEBUG
logging.level.root=INFO

说明:配置日志级别值大小写均可,例如:设置成debug/info

刨根问底,死磕自己(选看)

1. 日志级别设置选项

源码中系统日志级别是个枚举类,列出了所有日志级别,如下截图:

根据在application.yml中设置的LEVEL值,匹配系统日志枚举类,最终设置系统相应包下的日志级别。

SpringBoot官网: https://docs.spring.io/spring-boot/docs/2.1.2.RELEASE/reference/htmlsingle/

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java实现pdf文件合并的使用示例

    Java实现pdf文件合并的使用示例

    本文主要介绍了Java实现pdf文件合并的使用示例,主要是将需要合并的pdf文件都拷贝到指定目录a中,调用该工具类将该目录作为第一个参数,第二个参数传入输出文件对象即可,感兴趣的可以了解一下
    2023-12-12
  • JAVA JDK8 List分组的实现和用法

    JAVA JDK8 List分组的实现和用法

    今天小编就为大家分享一篇关于JAVA JDK8 List分组的实现和用法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • java 相交链表的实现示例

    java 相交链表的实现示例

    本文主要介绍了java 相交链表的实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • springboot集成mybatis plus和dynamic-datasource注意事项说明

    springboot集成mybatis plus和dynamic-datasource注意事项说明

    这篇文章主要介绍了springboot集成mybatis plus和dynamic-datasource注意事项说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • java线程池中Worker线程执行流程原理解析

    java线程池中Worker线程执行流程原理解析

    这篇文章主要为大家介绍了java线程池中Worker线程执行流程原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • 详细介绍Java内存泄露原因

    详细介绍Java内存泄露原因

    详细介绍Java内存泄露原因,需要的朋友可以参考一下
    2013-05-05
  • SpringMVC中DispatcherServlet的HandlerMapping详解

    SpringMVC中DispatcherServlet的HandlerMapping详解

    这篇文章主要介绍了SpringMVC中DispatcherServlet的HandlerMapping详解,上回说的Handler,我们说是处理特定请求的,也就是说,不是所有的请求都能处理,那么问题来了,我们怎知道哪个请求是由哪个Handler处理的呢,需要的朋友可以参考下
    2023-10-10
  • JAVA设计模式之单例模式详解

    JAVA设计模式之单例模式详解

    大家好,本篇文章主要讲的是JAVA设计模式之单例模式详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • Spring的@Scope注解作用解析

    Spring的@Scope注解作用解析

    这篇文章主要介绍了Spring的@Scope注解作用解析,@Scope注解用于设置实例的作用域,默认值是单实例,即当IOC容器启动后就调用该方法创建对象放到IOC容器中,以后每次获取就是直接从容器中获取,需要的朋友可以参考下
    2023-11-11
  • SpringBoot处理JSON数据方法详解

    SpringBoot处理JSON数据方法详解

    这篇文章主要介绍了SpringBoot整合Web开发中Json数据处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-10-10

最新评论