SpringBoot应用默认日志输出使用姿势

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: SpringBoot应用默认日志输出使用姿势

概述


SpringBoot应用的一个最大特点就是去配置化,日志系统也不例外。默认情况下,你不做任何配置,只要引入相关依赖,就可以在控制台看到日志的输出,当然也可以在配置文件简单配置就能改变日志输出的行为。本文主要通过SpringBoot 2.7.0版本讲解默认日志输出的相关配置以及如何使用。


简单使用


  1. 引入相关依赖

项目工程中引入下面的依赖:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-logging</artifactId>
  <version>2.7.0</version>
</dependency>

一般的web引用都会自动引入该依赖,不需要手动引入。

1671191226572.jpg

  1. 添加日志
@SpringBootApplication
@Slf4j
public class LogApplication
{
    public static void main( String[] args )
    {
        SpringApplication.run(LogApplication.class, args);
        log.trace("Trace 日志...");
        log.debug("Debug 日志...");
        log.info("Info 日志...");
        log.warn("Warn 日志...");
        log.error("Error 日志...");
    }
}

启动类中添加验证日志,得到输出结果:

1671191273360.jpg

  1. 小结
  • 默认情况下,不做任何配置,日志仅仅输出到控制台中。
  • 日志级别从小到大为 trace < debug < info < warn < error < fatal,由于默认日志级别设置为 INFO,因此上面样例 trace 和 debug 级别的日志都看不到。

我们可以通过一些配置项,改变这种默认行为。


日志相关配置


  1. 修改日志级别 logging.level

只需要在配置文件中通过 logging.level 包名的形式可以精细化控制各个不同包日志的输出级别,也可以通过logging.level.root全局修改日志级别。日志级别可以配置下面6个: trace < debug < info < warn < error < fatal。

1671191292478.jpg

结果:

1671191335138.jpg

  1. 日志分组logging.group

日志如果包很多的话,对每个相同类别的包设置级别会很麻烦,好在日志系统有个日志分组功能。比如按照模块,我们用户模块的包归为一组,然后统一修改这个组的日志。

// 设置分组
logging.group.user=com.alvinlkk.user,com.alvinlkk.person
// 对分组修改日志级别
logging.level.user=debug

SpringBoot给我们内置了两个分组web 和 sql,如下:

1671191362053.jpg

  1. 日志输出到文件中logging.file.name

如果你想将日志输出到文件,可以通过如下配置指定日志文件名:

logging.file.name=logdemo.log

logging.file.name 可以只指定日志文件名,也可以指定日志文件全路径,例如下面这样:

logging.file.name=/Users/alvin/Documents/javaboy/logdemo.log

运行结果:

1671191390692.jpg

  1. 日志输出到目录中logging.file.path

如果你只是想重新定义输出日志文件的路径,也可以使用 logging.file.path 属性, 生成的文件名为spring.log, 如果同时配置了logging.file.path和logging.file.name,logging.file.path配置会失效。

logging.file.path=/Users/alvin/CodeRepo/Person/springboot-demo/springboot-03-log

1671191403696.jpg

  1. 修改日志输出格式

logging.pattern.console修改控制台的日志输出格式。

logging.pattern.file修改文件中的日志输出格式。

# 修改在控制台输出的日志格式
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger : %msg%n
# 修改输出到文件的日志格式
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger : %msg%n

符号说明:

%d{HH:mm:ss.SSS}:日志输出时间

%-5level:日志级别,并且使用 5 个字符靠左对齐

%thread:输出日志的进程名字,这在 Web 应用以及异步任务处理中很有用

%logger:日志输出者的名字

%msg:日志消息

%n:平台的换行符

  1. 归档相关的日志
归档配置 说明 默认值
logging.logback.rollingpolicy.clean-history-on-start 是否在启动时清理归档日志文件。 false
logging.logback.rollingpolicy.file-name-pattern 归档日志文件名的模式。 ${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz
logging.logback.rollingpolicy.max-file-size 单个文件最大日志文件大小 10MB
logging.logback.rollingpolicy.max-history 要保存的存档日志文件的最大数量 7
logging.logback.rollingpolicy.total-size-cap 日志文件被删除之前,可以容纳的最大大小 0B


actuator查看日志


配置了logging.file.name后,日志内容也可以通过actuator的端点查看。

  1. 引入actuator相关的jar
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
  1. 配置暴露所有的断点
management.endpoints.web.exposure.include=*
  1. 查看日志内容

浏览器输入地址http://localhost:8080/actuator/logfile 可以查看日志内容,如下图:

1671191430374.jpg


总结


虽然默认的的日志实现很方便,但是有一些局限性,只能实现对日志一些非常简单的配置,如果想实现更加细粒度的日志配置,那就需要使用日志实现的原生配置,例如 Logback 的 classpath:logback.xml,Log4j 的 classpath:log4j.xml 等。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
21天前
|
Java 中间件
SpringBoot入门(6)- 添加Logback日志
SpringBoot入门(6)- 添加Logback日志
64 5
|
2月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
162 1
|
2月前
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
104 62
|
3天前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
13 5
|
13天前
|
Java 中间件
SpringBoot入门(6)- 添加Logback日志
SpringBoot入门(6)- 添加Logback日志
26 1
|
23天前
|
存储 SQL 监控
|
23天前
|
自然语言处理 监控 数据可视化
|
28天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
53 2
|
29天前
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
38 1