在本文中,我们将提供spring boot日志记录的例子。Spring boot可以使用Logback、Log4J2、java util日志。默认情况下,spring boot使用Logback进行日志记录。默认情况下,日志被记录在控制台,也可以被记录在文件中。Logback的JAR依赖性由spring-boot-starter-logging解决。当我们使用任何spring boot starter时,spring-boot-starter-logging被默认解决。我们不需要单独包括它。如果Logback JAR在classpath中可用,那么spring boot将总是选择Logback作为日志记录。因此,如果要使用其他日志,比如Log4J2,我们需要排除Logback JAR,在classpath中添加Log4J2 JAR。要使用Logback日志,我们什么都不用做,只要在application.properties
或application.yml
配置日志级别就可以了。默认情况下,ERROR
、WARN
和INFO
的日志级别信息被记录在控制台。要改变日志级别,使用logging.level属性。要在文件中获取日志,我们可以在属性文件中配置logging.file或logging.path。当日志文件达到10MB时,将进行轮换。找到属性文件中配置的spring环境。
logging.level.。它作为软件包名称的前缀,用于设置日志级别。
logging.file: 它配置了一个日志文件名来记录文件中的信息。我们也可以用绝对路径配置文件名。
logging.path: 它只配置了日志文件的路径。Spring boot创建了一个名为spring.log
的日志文件。
logging.pattern.console: 它定义了控制台中的日志模式。
logging.pattern.file: 它定义了文件中的日志模式。
logging.pattern.level: 它定义了呈现日志级别的格式。默认为 %5p
。
logging.exception-conversion-word: 它定义了记录异常时的转换词。
PID: 它定义了当前进程的ID。
我们将在这里讨论如何使用Logback,并使用application.properties
和application.yml
以及Logback XML文件配置日志属性。我们还将提供如何在我们的spring boot应用程序中启用Log4J2日志记录。
logging.level是用来设置日志级别的。日志级别可以是TRACE
、DEBUG
、INFO
、WARN
、ERROR
、FATAL
、OFF
之一。日志级别可以设置在根级别和包级别。在这个演示中,我们正在创建一个有以下依赖关系的应用程序。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
我们可以按以下方式设置日志级别。使用src\main\resources\application.properties
logging.level.root= WARN
logging.level.org.springframework.security= DEBUG
logging.level.org.springframework.web= ERROR
logging.level.org.hibernate= DEBUG
logging.level.org.apache.commons.dbcp2= DEBUG
找到属性文件的位置的打印屏幕。
现在使用src\main\resources\application.yml
logging:
level:
root: WARN
org:
springframework:
security: DEBUG
web: ERROR
hibernate: DEBUG
apache:
commons:
dbcp2: DEBUG
默认情况下,spring boot在控制台显示日志,但如果我们想在日志文件中记录日志,我们需要定义logging.file或logging.path属性。这里我们将了解logging.file属性的使用。logging.file属性用于定义日志文件名。它可以是唯一的文件名或带有路径的文件名。
例如,在application.properties
中配置logging.file。
logging.level.org.springframework.security= DEBUG
logging.level.org.hibernate= DEBUG
logging.file = mylogfile.log
在这种情况下,一个名称为mylogfile.log
的日志文件将被创建在项目的根目录下。我们也可以给日志文件指定一个concretepage/mylogfile.log
的路径。在这种情况下,日志文件将以相对于项目根目录的路径concretepage/mylogfile.log
创建。我们也可以为日志文件的位置指定一个绝对路径。
例如,将logging.file配置在application.yml
。
logging:
level:
org:
springframework:
security: DEBUG
hibernate: DEBUG
file: mylogfile.log
为了获取文件中的日志,我们需要定义logging.file或logging.path属性。这里我们将了解logging.path属性的使用。logging.path属性被用来定义日志文件的路径。一个名称为spring.log
的日志文件将被创建在给定的路径中。
例如,将logging.path配置为application.properties
。
logging.level.org.springframework.security= DEBUG
logging.level.org.hibernate= DEBUG
logging.path = concretepage/logs
一个名为spring.log
的日志文件将以相对于项目根目录的路径concretepage/logs/spring.log
创建。我们也可以为日志文件的位置指定一个绝对路径。
例如,将logging.path配置在application.yml
。
logging:
level:
org:
springframework:
security: DEBUG
hibernate: DEBUG
path: concretepage/logs
要改变控制台的日志模式,我们需要使用logging.pattern.console属性。日志模式包括日期、时间、日志级别、线程名称、日志者名称和消息。我们可以根据我们的要求改变控制台中的日志模式,如下所示。
使用application.properties
logging.level.org.springframework.security= DEBUG
logging.level.org.hibernate= DEBUG
logging.pattern.console= %d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n
使用application.yml
logging:
level:
org:
springframework:
security: DEBUG
hibernate: DEBUG
pattern:
console: '%d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n'
要改变文件中的日志模式,我们需要在属性文件中配置logging.pattern.file。但首先,我们需要启用文件中的日志记录。通过配置属性文件中的logging.file或logging.path,可以启用文件中的日志。
使用application.properties
logging.level.org.springframework.security= DEBUG
logging.level.org.hibernate= DEBUG
logging.path = concretepage/logs
logging.pattern.file= %d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n
logging.pattern.console= %d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n
为了启用文件中的日志记录,我们使用logging.path属性。一个名为spring.log
的日志文件将在相对于项目根目录的concretepage/logs创建。属性logging.pattern.file将在文件中设置日志模式,logging.pattern.console将在控制台设置日志模式。
使用application.yml
logging:
level:
org:
springframework:
security: DEBUG
hibernate: DEBUG
path: concretepage/logs
pattern:
file: '%d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n'
console: '%d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n'
ERROR
、WARN
和INFO
的日志级别是默认显示的。我们可以使用命令行和属性文件启用DEBUG
和TRACE
日志级别。假设我们有一个名为my-app.jar的可执行jar,那么要启用DEBUG
级别,启动应用程序如下。
java -jar my-app.jar --debug
同样的情况也可以通过属性文件来实现,配置属性如下。
使用application.properties
debug=true
使用application.yml
debug: true
以同样的方式,我们可以使用命令行启用TRACE
级别的日志。
java -jar my-app.jar --trace
同样也可以通过属性文件来实现,配置属性如下。
使用application.properties
trace=true
使用application.yml
trace: true
我们正在创建一个将使用SLF4J与Logback的例子。为了在我们的类中使用日志,我们需要在我们的类中实例化org.slf4j.Logger
。找到这个例子。
MyApplication.java
package com.concretepage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyApplication {
private static final Logger logger = LoggerFactory.getLogger(MyApplication.class);
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
logger.debug("--Application Started--");
}
}
用application.properties
中的其他日志配置为包com.concretepage
启用日志。
logging.level.root= WARN
logging.level.org.springframework.web= ERROR
logging.level.com.concretepage= DEBUG
输出
2017-03-25 19:03:54.189 DEBUG 4828 --- [ main] com.concretepage.MyApplication : Running with Spring Boot v1.5.2.RELEASE, Spring v4.3.7.RELEASE
2017-03-25 19:03:54.189 INFO 4828 --- [ main] com.concretepage.MyApplication : No active profile set, falling back to default profiles: default
2017-03-25 19:03:58.846 INFO 4828 --- [ main] com.concretepage.MyApplication : Started MyApplication in 5.209 seconds (JVM running for 5.66)
2017-03-25 19:03:58.846 DEBUG 4828 --- [ main] com.concretepage.MyApplication : --Application Started--
默认情况下,spring boot使用Logback,我们在application.properties
或application.yml
配置日志级别。如果我们想对Logback使用XML配置,那么我们需要在classpath中创建logback-spring.xml
文件。
src\mainresources\logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<logger name="org.springframework.web" level="ERROR"/>
<logger name="com.concretepage" level="DEBUG"/>
</configuration>
当我们使用任何spring boot starter时,Logback的依赖关系spring-boot-starter-logging默认在classpath中解决。要使用Log4j2,我们需要排除它并包含spring-boot-starter-log4j2,如下所示。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
现在在classpath中创建log4j2-spring.xml
并配置日志。
现在我已经完成了。祝你学习Spring Boot愉快!
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://www.concretepage.com/spring-boot/spring-boot-logging-example
内容来源于网络,如有侵权,请联系作者删除!