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

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

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

<!-- more -->

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表示默认的级别

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

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

原文链接:http://spring.hhui.top/spring-blog/2018/09/27/180927-SpringBoot%E5%9F%BA%E7%A1%80%E7%AF%87%E6%97%A5%E5%BF%97%E7%AE%A1%E7%90%86%E4%B9%8B%E9%BB%98%E8%AE%A4%E9%85%8D%E7%BD%AE/

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏逍遥剑客的游戏开发

HDR效果

<?xml:namespace prefix = v /><?xml:namespace prefix = o />

25950
来自专栏刘晓杰

WebView浏览本地html

index.html放在Assets文件夹下,供WebChromeClient调用

21630
来自专栏Java进阶

从SVN上检出项目转换为maven项目失败

昨天遇到了一个问题,就是从SVN上下载了公司的一个子项目,结果发现无法转换为maven的目录格式;

18440
来自专栏csxiaoyao

系统学习javaweb-11-SSH整合

struts-core hibernate-core spring   Core 核心功能   Web 对web模块支持   Aop ...

11910
来自专栏一枝花算不算浪漫

[Linux]Linux下安装和配置solr/tomcat/IK分词器 详细实例二.

为了更好的排版, 所以将IK分词器的安装重启了一篇博文,  大家可以接上solr的安装一同查看. [Linux]Linux下安装和配置solr/tomcat/I...

12320
来自专栏逍遥剑客的游戏开发

LG WebOS TV降级方法

LG官方的固件更新从来不加什么更新日志, 如果手贱更新了发现少了什么功能就只能认栽

52920
来自专栏java小白

JavaWebSession里面对象活化与钝化

被钝化到work/catalina/localhost/自己刚刚填的文件名/文件夹下面

10630
来自专栏csxiaoyao

系统学习javaweb-12-SSH整合开发demo

EmployeeAction中数据的自动封装(Employee)与手动封装(deptId)

11720
来自专栏前端真相

cookie 与 session区别与用法

如果客户端浏览器将Cookie功能禁用,或者不支持Cookie怎么办?例如,绝大多数的手机浏览器都不支持Cookie。Java Web提供了另一种解决方案:UR...

17030
来自专栏csxiaoyao

系统学习javaweb-10-Hibernate的配置与api操作

名称:Hibernate的配置与api操作、关联映射 说明:直接执行代码,自动建表

12120

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励