【基础系列】日志管理之默认配置

文章目录
  1. I. 默认日志参数
    1. 1. 基础项目搭建
    2. 2. 配置说明
      1. a. debug日志支持
      2. b. log levels
      3. c. 输出格式
      4. d. 输出文件
      5. e. logback.xml配置
  2. II. 其他
    1. 相关文档
    2. 0. 项目
    3. 1. 一灰灰Blog
    4. 2. 声明
    5. 3. 扫描关注

对于一个后端来说,日志是不可缺少的,这个东西,形象点就像剑客手中的剑,没有剑你就刷不了帅,砍不了人。所以就有必要好好的说道说道,这个日志文件的管理了。本篇博文将关注以下几点内容

  • 日志级别选择
  • 日志输出到文件
  • 格式化输出
  • 日志文件管理(自动删除,压缩归档等)
  • 常用的logback-spring.xml配置

I. 默认日志参数

1. 基础项目搭建

创建一个SpringBoot项目,根据官方文档的说明,默认选择的是Logback来记录日志;logback也是相对来说用的比较多的框架了,下文全都默认以logback作为日志输出框架

By default, if you use the “Starters”, Logback is used for logging. Appropriate Logback routing is also included to ensure that dependent libraries that use Java Util Logging, Commons Logging, Log4J, or SLF4J all work correctly.

完整的pom依赖如下,即不需要引入什么特别的依赖,基本上就是SpringBoot项目最根本的项目结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
<java.version>1.8</java.version>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>

<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</pluginManagement>
</build>

<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>

写一个简单的日志测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Slf4j
@SpringBootApplication
public class Application {

public Application() {
log.debug("---> debug start! <------");
log.info("---> info start! <------");
log.warn("---> warn start! <------");
log.error("---> error start! <------");

System.out.println("===> System.out.println <=====");
}

public static void main(String[] args) {
SpringApplication.run(Application.class);
}
}

看下控制台输出结果,info,warn,error可以正常输出且输出格式包含一些附加信息,System.out也可以正常输出,debug的日志没有

1
2
3
4
2018-09-26 14:16:01.136  INFO 38924 --- [           main] com.git.hui.boot.log.Application         : ---> info start! <------
2018-09-26 14:16:01.137 WARN 38924 --- [ main] com.git.hui.boot.log.Application : ---> warn start! <------
2018-09-26 14:16:01.137 ERROR 38924 --- [ main] com.git.hui.boot.log.Application : ---> error start! <------
===> System.out.println <=====

2. 配置说明

接下来在进入logback的配置文件之前,先看一下默认的配置有哪些,以及如何使用

a. debug日志支持

默认是不输出debug日志的,如果需要,则需要在配置文件中添加 debug=true 属性;同样可以设置trace=true,就可以看应用输出的trace日志

然而,即便开启了debug,上面测试中的debug日志也依然没有,那需要输出上面的debug日志,应该怎么设置?

b. log levels

上面的配置虽然在控制台打印了一些debug日志,但并没有打印我们业务代码中的debug日志,需要开启这个,需要如下设置

1
2
3
logging.level.root=DEBUG
logging.level.org.springframework=INFO
logging.level.org.hibernate=ERROR

上面这个配置就是指定包下日志输出的等级,root表示默认的级别

如上配置后,再次执行上面的代码,输出结果如下

log level测试

c. 输出格式

默认的输出格式如前面的截图,如果希望更改下输出的日志格式,可以通过修改属性来完成,一个也实例如下

1
logging.pattern.console=%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n

再次执行,输出样式如下

输出格式

至于这个属性值的构成原则,在后面说到logback.xml配置文件语法时,一并再说

说明

还有个参数可以设置文本的颜色,个人感觉实用性不是特别大,只贴下配置如下

1
2
3
4
## 检测终端是否支持ANSI,是的话就采用彩色输出
spring.output.ansi.enabled=detect
## %clr(){} 格式,使文本以蓝色输出
logging.pattern.console=%clr(%d{yyyy-MM-dd HH:mm:ss.SSS} %thread] %-5level %logger{36} - %msg%n){blue}

d. 输出文件

上面所有的日志都是输出到控制台,在实际的生成环境中,一般要求日志写到文件,可以方便随时进行查看,通过设置相关参数也可以很简单实现

1
2
3
4
5
6
## 输出的日志文件
logging.file=logs/info.log
## 当文件超过1G时,归档压缩
logging.file.max-size=1GB
## 日志文件最多保存3天
logging.file.max-history=3

同样执行前面的代码两次,输出如下, 两次的输出结果都可以在日志文件中查到,相比较于控制台而言,用于查历史日志就更加的方便了

输出文件演示

上图中,控制台的输出格式和日志文件的输出格式不一样,因为前面修改了控制台的输出样式;如果希望修改文件中的日志格式,也可以通过修改配置logging.pattern.file来实现

e. logback.xml配置

上面的配置虽然ok,但是对于Logback而言,还是有很多高级特性不太好配置,因此SpringBoot还是支持通过加载logback-spring.xml配置文件来定义日志相关的参数,只需要在资源文件目录下添加 logback-spring.xml 或者 logging.config 即可

II. 其他

相关文档

0. 项目

1. 一灰灰Blog

一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

2. 声明

尽信书则不如,已上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

3. 扫描关注

一灰灰blog

QrCode

知识星球

goals


打赏 如果觉得我的文章对您有帮助,请随意打赏。
分享到