SpringBoot基础篇日志管理之默认配置

更多Spring文章,欢迎点击 一灰灰Blog-Spring专题html

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

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

<!-- more -->git

I. 默认日志参数

1. 基础项目搭建

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

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.spring

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

<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>

写一个简单的日志测试框架

@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的日志没有maven

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的配置文件以前,先看一下默认的配置有哪些,以及如何使用spring-boot

a. debug日志支持

默认是不输出debug日志的,若是须要,则须要在配置文件中添加 debug=true 属性;一样能够设置trace=true,就能够看应用输出的trace日志学习

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

b. log levels

上面的配置虽然在控制台打印了一些debug日志,但并无打印咱们业务代码中的debug日志,须要开启这个,须要以下设置

logging.level.root=DEBUG
logging.level.org.springframework=INFO
logging.level.org.hibernate=ERROR

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

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

log level测试

c. 输出格式

默认的输出格式如前面的截图,若是但愿更改下输出的日志格式,能够经过修改属性来完成,一个也实例以下

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

再次执行,输出样式以下

输出格式

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

说明

还有个参数能够设置文本的颜色,我的感受实用性不是特别大,只贴下配置以下

## 检测终端是否支持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. 输出文件

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

## 输出的日志文件
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

相关文章
相关标签/搜索