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

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情

概述

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引用都会自动引入该依赖,不需要手动引入。

  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 日志...");
    }
}
复制代码

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

  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。

结果:

  1. 日志分组logging.group

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

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

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

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

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

logging.file.name=logdemo.log
复制代码

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

logging.file.name=/Users/alvin/Documents/javaboy/logdemo.log
复制代码

运行结果:

  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
复制代码

  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 可以查看日志内容,如下图:

总结

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

参考

www.hangge.com/blog/cache/…

www.cnblogs.com/lenve/p/141…

www.cnblogs.com/bigdataZJ/p…

blog.csdn.net/CSDN2497242…

\

猜你喜欢

转载自juejin.im/post/7150073533110943775
今日推荐