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

作者:让蛋蛋飞 时间:2023-06-02 23:00:23 

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

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

日志格式

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

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

级别控制

配置属性格式: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. 日志级别设置选项

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

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

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

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

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

来源:https://juejin.im/post/5c525fac51882525800544b4

标签:SpringBoot,集成,日志
0
投稿

猜你喜欢

  • Android AlertDialog六种创建方式案例详解

    2022-08-30 01:55:47
  • C#创建自定义控件及添加自定义属性和事件使用实例详解

    2022-05-30 02:10:12
  • SpringMVC统一异常处理实例代码

    2021-05-31 02:29:26
  • Java数据结构及算法实例:快速计算二进制数中1的个数(Fast Bit Counting)

    2022-07-31 14:39:23
  • java 基础之final、finally和finalize的区别

    2023-08-01 04:44:49
  • Spring Boot Actuator自定义健康检查教程

    2022-06-12 14:54:59
  • C#解析Lrc歌词文件过程详解

    2021-12-26 05:52:38
  • 一文带你深入了解Java泛型

    2022-02-10 05:38:02
  • C#使用ScrapySharp快速从网页采集数据

    2021-08-14 09:25:14
  • C#遍历得到checkboxlist选中值和设置选中项的代码

    2022-10-25 20:52:22
  • C#在Excel表格中插入、编辑和删除批注

    2023-01-12 13:52:20
  • springboot项目如何设置session的过期时间

    2022-12-31 23:45:27
  • C++对string进行大小写转换操作方法

    2023-11-03 04:32:59
  • 关于Spring Boot内存泄露排查的记录

    2023-06-27 18:46:19
  • Java基础之二叉搜索树的基本操作

    2023-07-08 10:07:07
  • Java struts2捕获404错误的方法汇总

    2021-10-14 00:12:16
  • android编程实现sd卡读取数据库的方法

    2021-10-03 12:26:31
  • Dubbo Consumer引用服务示例代码详解

    2022-04-26 03:56:44
  • Java中synchronized关键字引出的多种锁 问题

    2021-06-05 04:42:45
  • 花样使用Handler与源码分析

    2023-07-30 08:36:31
  • asp之家 软件编程 m.aspxhome.com