ramostear.comramostear.com 谭朝红的技术分享博客

格言 编程是一门技术,也是一门艺术 !

如何配置Spring Boot的日志记录信息?

如何配置Spring Boot的日志记录信息?

Spring Boot (五)—日志记录

Spring Boot 应用程序默认使用Apache Commons Logging来记录所有内部的日志。除此之外,Spring Boot还支持使用Java Util Longging、Log4j2和Logback来记录系统日志。我们可以通过配置相关参数,让其在控制台输出日志或者将日志写入到日志文件中。

通常情况下,如果使用Spring Boot Starter的方式引入依赖,系统将会使用Logback来记录日志,以此同时,Logback还可以和Common Logging、Util Loging、Log4j以及SLF4进行整合。

1. 日志的格式

在Spring Boot 应用程序中,默认的日志格式如下所示:

2019-03-05 02:02:00.013  INFO 7700 ---[main] .r.s.b.p.SpringBootPropertiesApplication : The following profiles are active: dev
2019-03-05 02:02:01.697  INFO 7700 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8081 (http)
2019-03-05 02:02:01.732  INFO 7700 --- [main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]

通常情况下,日志文件为我们提供了如下的几个信息:

  • 日期和时间,该日志记录的日期和时间
  • 日志级别,日志级别包括INFO、ERROR、DEBUG和WARN等
  • 进程编号,日志信息通常会包含当前的进程ID
  • —- ,信息分隔符
  • 线程名称,线程名称将使用方括号“[]”包含起来
  • 记录器名称,显示源文件类的名称
  • 日志消息

2. 控制台日志

Spring Boot应用程序在默认的情况下,“INFO”、“ERROR”和“WARN”级别的日志信息将打印到控制台窗口中,如果需要启用“DEBUG”级别的日志记录,需要在启动应用程序的时候添加日志记录级别标识命令:

java -jar jarfile.jar --debug

除此之外,也可以在applicatioin.properties或者application.yml文件中进行配置,以application.properties文件为例:

debug = true

3. 文件日志

默认情况下,所有的日志信息都将在控制台打印输出,而不会写入到日志文件中。如果需要将日志信息记录到日志文件中,则需要在application.properties或者application.yml配置文件中设置属性logging.file 或者logging.path的值。

我们可以显示的指定日志文件的存储路径,以application.properties为例,指定日志文件存储路径:

logging.path = D:\work\logging\

此时,日志文件默认的文件名称是spring.log

除了上面的配置之外,我们还可以同时指定日志文件存储路径和文件名称:

logging.file = D:\work\logging\mine-logging.log

注:一个日志文件最多能够存储10,000KB的日志信息。

4. 日志级别

Spring Boot应用程序支持所有的日志记录级别,如“TRACE”、“DEBUG”、“INFO”、”WARN”、”ERROR”、

“FATAL”以及”OFF”。你可以在配置文件中指定一个root logger:

logging.level.root = WARN

提示:Logback不支持“FATAL”级别的日志,“FATAL”级别的日志将被映射到“ERROR”级别的日志中。

5. 配置Logback

Logback支持一XML文件格式来配置Spring Boot应用程序日志。一般地、日志配置文件也应该放置在类路径下,下面给出Logback.xml文件的一个配置示例:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
 <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"></appender>
 <root level = "INFO">
    <appender-ref ref = "STDOUT"/>
 </root>
</configuration>

接下来,我们将在Spring Boot Application主类中使用slf4j logger来记录日志。首先是Logback.xml文件配置:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <appender name="STDOUT" class="cn.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'z'}][%C][%t][%L][%-5p] %m%n</pattern>
        </encoder>
    </appender>
    <appender name="FILE" class="cn.qos.logback.core.FileAppender">
        <File>D:\work\logging\mine-log.log</File>
        <encoder>
            <pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'z'}][%C][%t][%L][%-5p] %m%n</pattern>
        </encoder>
    </appender>
    <root level="INFO">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>

主类源代码:

package com.ramostear.spring.boot.logger;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringBootLoggerApplication {

    private static final Logger logger = LoggerFactory.getLogger(SpringBootLoggerApplication.class);
    public static void main(String[] args) {
        logger.info("This is a info level logger message.");
        logger.warn("This is a warn level logger message.");
        logger.error("This is a error level logger message.");
        SpringApplication.run(SpringBootLoggerApplication.class, args);
    }

}

现在,我们启动应用,观察控制台和日志文件中的内容。控制台窗口输出内容:

"C:\Program Files\Java\jdk1.8.0_144\bin\java"...
[2019-03-05T19:25:59.059Z] [com.ramostear.spring.boot.logger.SpringBootLoggerApplication] [main] [13] [INFO ] This is a info level logger message.
[2019-03-05T19:25:59.059Z] [com.ramostear.spring.boot.logger.SpringBootLoggerApplication] [main] [14] [WARN ] This is a warn level logger message.
[2019-03-05T19:25:59.059Z] [com.ramostear.spring.boot.logger.SpringBootLoggerApplication] [main] [15] [ERROR] This is a error level logger message.

接下来,我们再看看日志文件中记录的内容:

(转载本站文章请注明作者和出处:谭朝红-ramostear.com,未经允许请勿做任何商业用途)

发表评论