使用application.properties进行Spring Boot日志记录

通过文件以简单易懂的说明学习Spring Boot日志配置application.properties。在Spring Boot Web应用程序的默认结构中,我们可以在application.properties文件resources夹下找到文件。

application.properties
logging.level.org.springframework=DEBUG
logging.level.com.how2codex=DEBUG
#output to a temp_folder/file
logging.file=${java.io.tmpdir}/application.log
# Logging pattern for the console
logging.pattern.console= %d{yyyy-MM-dd HH:mm:ss} - %msg%n
# Logging pattern for file
logging.pattern.file= %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%
目录

1。 Spring Boot默认日志记录
2。 Spring Boot日志记录级别
3。 Spring Boot日志记录模式
4.将日志输出到文件
5.活动配置文件以加载特定于环境的日志记录配置
6.以颜色编码的日志输出

1。 Spring Boot默认日志记录

要了解默认的Spring Boot日志记录,请将日志放入spring boot hello world示例中。只需提及,application.properties文件中没有与日志记录相关的配置。如果我们在下载的应用程序中看到任何配置,请删除它。

private final Logger LOGGER = LoggerFactory.getLogger(this.getClass());
@RequestMapping("/")
public String home(Map<String, Object> model) {
    LOGGER.debug("This is a debug message");
    LOGGER.info("This is an info message");
    LOGGER.warn("This is a warn message");
    LOGGER.error("This is an error message");
    model.put("message""how2codex Reader !!");
    return "index";
}

启动应用程序。在浏览器上访问应用程序并验证控制台中的日志消息

2017-03-02 23:33:51.318 INFO 3060 --- [nio-8080-exec-1] chapp.controller.IndexController:打印的信息日志语句
2017-03-02 23:33:51.319 WARN 3060 --- [nio-8080-exec-1] chapp.controller.IndexController:警告日志语句已打印
2017-03-02 23:33:51.319错误3060 --- [nio-8080-exec-1] chapp.controller.IndexController:打印错误日志语句

记下默认日志记录级别为INFO的观察结果,因为不存在调试日志消息。
有固定的默认日志消息模式,该模式在不同的基本配置文件中配置

%clr {%d {yyyy-MM-dd HH:mm:ss.SSS}} {淡}%clr {$ {LOG_LEVEL_PATTERN}}%clr {$ {sys:PID}} {洋红色} 
%clr {---} {faint}%clr {[%15.15t]} {faint}%clr {%-40.40c {1。}} {cyan}%clr {:} {faint}%m%n $ {sys:LOG_EXCEPTION_CONVERSION_WORD}

上面的模式打印这些列出的日志消息部分,并应用了相应的颜色编码:

  • 日期和时间-毫秒精度。
  • 日志级别-错误,警告,信息,调试或跟踪。
  • 进程ID。
  • A-分隔符,用于区分实际日志消息的开始。
  • 线程名-括在方括号中(对于控制台输出,可能会被截断)。
  • 记录器名称-这通常是源类名称(通常缩写)。
  • 日志消息

2。 Spring Boot日志记录级别

通过记录器记录消息时,将以特定的记录级别记录消息。在application.properties文件中,您可以定义Spring Boot记录器,应用程序记录器,Hibernate记录器,Thymeleaf记录器等的日志级别。要为任何记录器设置记录级别,请添加以开头的属性logging.level

日志记录级别可以是一个之一TRACEDEBUGINFOWARNERRORFATALOFF。可以使用来配置根记录器logging.level.root

#logging.level.root=WARN
logging.level.org.springframework.web=ERROR
logging.level.com.how2codex=DEBUG

在以上配置中,我将应用程序类的日志级别升级为DEBUG(从默认的INFO)。现在观察日志:

2017-03-02 23:57:14.966调试4092--[nio-8080-exec-1] chapp.controller.IndexController:已打印调试日志语句
2017-03-02 23:57:14.967 INFO 4092--[nio-8080-exec-1] chapp.controller.IndexController:打印的信息日志语句
2017-03-02 23:57:14.967 WARN 4092 --- [nio-8080-exec-1] chapp.controller.IndexController:警告日志语句已打印
2017-03-02 23:57:14.967错误4092 --- [nio-8080-exec-1] chapp.controller.IndexController:打印错误日志语句

3。 Spring Boot 日志模式

要更改日志记录模式,请使用logging.pattern.consolelogging.pattern.file属性。

# Logging pattern for the console
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} - %msg%n
# Logging pattern for file
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n

在应用程序中更改控制台日志记录模式后,日志语句如下所示:

2017-03-03 12:59:13-这是一条调试消息
2017-03-03 12:59:13-这是一条信息消息
2017-03-03 12:59:13-这是一条警告消息
2017-03-03 12:59:13-这是一条错误消息

4.日志输出到文件

要打印登录文件,请使用logging.filelogging.path属性。

logging.file=c:/users/howtodoinjava/application-debug.log

验证日志文件。

2017-03-03 13:02:50.608 DEBUG 10424 --- [http-nio-8080-exec-1] c.h.app.controller.IndexController       : This is a debug message
2017-03-03 13:02:50.608  INFO 10424 --- [http-nio-8080-exec-1] c.h.app.controller.IndexController       : This is an info message
2017-03-03 13:02:50.608  WARN 10424 --- [http-nio-8080-exec-1] c.h.app.controller.IndexController       : This is a warn message
2017-03-03 13:02:50.609 ERROR 10424 --- [http-nio-8080-exec-1] c.h.app.controller.IndexController       : This is an error message

5.活动配置文件以加载特定于环境的日志记录配置

对于任何应用程序都希望有多个配置-每个配置都特定于特定的运行时环境。在Spring Boot中,您可以通过application-{profile}.properties在与文件相同的位置创建多个文件来实现此目的application.properties

配置文件特定的属性始终会覆盖非配置文件特定的属性。如果指定了多个配置文件,则采用后赢策略。

如果我的应用程序有两个环境,即proddev。然后,我将创建两个特定于配置文件的属性文件。

5.1。application-dev.properties

logging.level.com.how2codex=DEBUG
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} - %msg%n

5.2。application-prod.properties

logging.level.com.how2codex=ERROR
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} - %msg%n

为了向应用程序提供配置文件信息,将属性spring.profiles.active传递给运行时。

$ java -jar -Dspring.profiles.active=prod spring-boot-demo.jar

6.颜色编码的日志输出

如果您的终端支持ANSI,则将使用彩色输出来提高可读性。您可以设置spring.output.ansi.enabled值要么ALWAYSNEVERDETECT

使用%clr转换字配置颜色编码。转换器将以最简单的形式根据对数级别对输出进行着色。

致命和错误– 红色
警告– 黄色
信息,调试和跟踪– 绿色

如果您有任何疑问,请在评论区留言,我会一一解答。

saigon has written 1445 articles

Leave a Reply