专栏首页小灰灰SpringBoot基础篇日志管理之默认配置

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

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项目最根本的项目结构

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

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日志,需要开启这个,需要如下设置

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

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

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

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

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

    一灰灰blog
  • 利用crypto++库实现AES加密算法

    利用crypto++库实现AES加/解密字符串,文件 MyAES.h: /* * MyAES.h * * Created on: 2013-3-...

    一灰灰blog
  • SpringBoot基础篇日志管理之logback配置文件

    也不针对语法进行逐一说明了,直接针对常见的xml配置文件进行分析,反正看完也会忘的,等到要用的时候,一般都是拷贝一个魔板,改改名啥的就over了

    一灰灰blog
  • python 日志模块logging学习

    在日常项目中,总是需要记录下一些细小信息或者错误码、错误信息的,这个时候就需要进行日志的操作。

    py3study
  • [Skr-Shop]刷新认知,秒杀竟然有这么多花样!!

    如果刚开始QPS并不高,redis完全抗的下来的情况,完全可以依赖这个「简单秒杀系统」。

    大愚
  • 所有 Python 程序员必须要学会的「日志」记录。

    在我们的现实生活中,「日志记录」其实是一件非常重要的事情,比如银行的转账记录,汽车的行车记录仪记录行驶过程中的一切,如果出现了什么问题,我们可以通过「日志记录」...

    Rocky0429
  • OpenCV学习入门(一):人脸检测

    关于OpenCV网上的学习资料非常多,尤其是很多比较专业的技术博客,对学习计算机视觉的筒子们真的是个非常好的帮助~踩在这些巨人们的肩膀上,我打算一步一个脚印从零...

    用户1150922
  • ATI Systems 警报器现「SirenJack 远程漏洞」,可通过无线电频率激活警报制造全城混乱

    近日,网络安全公司 Bastille 发布的安全公告称, ATI Systems 的紧急警报系统中暴露了一个名为SirenJack 的远程劫持漏洞,攻击者可以通...

    周俊辉
  • python 日志模块 logging 详解

    Java 中最通用的日志模块莫过于 Log4j 了,在 python 中,也自带了 logging 模块,该模块的用法其实和 Log4j 类似。 Python ...

    用户1177713
  • insert增数据详解

    在添加数据之前,如果使用gbk编码,可能导致中文字符的长度不够的错误,所以可以使用:

    爱学习的孙小白

扫码关注云+社区

领取腾讯云代金券