Spring Boot可以使用多种日志记录工具,例如Logback、Log4J2和Java util logging等。其中,Spring Boot默认使用Logback作为日志记录工具,并将日志输出到控制台,也可以输出到文件中。您可以通过添加spring-boot-starter-logging依赖来引入Logback,而在添加其他任何Spring Boot starter时,Spring Boot都会默认引入spring-boot-starter-logging依赖,因此您无需单独添加该依赖。
如果想要使用Log4J2作为Spring Boot的日志记录工具,需要排除Logback JAR并添加Log4J2的依赖。
使用Logback记录日志的话,只需要在配置文件中配置日志级别,并且console默认输出ERROR、WARN和INFO级别的日志。可以通过修改logging.level属性来改变日志输出的级别,并且还可以通过配置logging.file或logging.path属性将日志输出到文件中,当文件大小达到10M时,会自动新建一个文件来记录日志。
Spring Boot 的日志文件名称默认为 spring.log。如果你没有设置 logging.file 属性,Spring Boot 将默认在应用程序的工作目录下生成一个名为 spring.log 的日志文件。你也可以通过指定 logging.file.name 或 logging.file.path 属性来自定义日志文件的名称和路径。
接下来将讨论如何在application.properties、application.yml、Logback XML中配置Logback,并使用Log4j2在Spring Boot应用中进行日志配置。
logging.level:设置日志级别,可使用TRACE、DEBUG、INFO、WARN、ERROR、FATAL、OFF。可使用root级别和package级别来控制日志输入级别。创建具有以下依赖关系的应用程序。
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-loggingartifactId>
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.level.org.springframework.security= DEBUG
logging.level.org.hibernate= DEBUG
logging.file = mylogfile.log
mylogfile.log可在根目录中创建,或以concretepage/mylogfile.log的形式在相对根目录下创建。另外,可为日志文件指定绝对路径。
logging:
level:
org:
springframework:
security: DEBUG
hibernate: DEBUG
file: mylogfile.log
配置logging.path或logging.file属性可将日志写入文件。logging.path属性用于定义日志文件夹路径。可在application.properties文件中进行配置。
logging.level.org.springframework.security= DEBUG
logging.level.org.hibernate= DEBUG
logging.path = concretepage/logs
spring.log日志文件将被创建在concretepage/logs文件夹下,该文件夹相对于项目根目录的路径。同时,也可以通过配置绝对路径的方式来定义日志文件的位置。
logging:
level:
org:
springframework:
security: DEBUG
hibernate: DEBUG
path: concretepage/logs
我们可以通过设置 logging.pattern.console 属性,来改变输出到控制台的日志展示样式。具体展示样式包括时间、日志级别、线程名、日志名、以及消息。您可以自由调整这些样式,以满足个人偏好。
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
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属性,将日志记录到文件中。可以根据实际需求,选择logging.file指定日志文件名和路径,或logging.path指定日志文件夹路径,Spring Boot将自动创建一个名为spring.log的日志文件。
编辑application.properties文件,添加以下内容:
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
该属性设置了一个包含时间戳、线程、日志级别、日志名和消息的样式。您可以根据实际需求进行调整。
注意,在实际运行中,您还可以使用其他的日志属性和样式进行设置,以满足您的实际需求。此外,对于较大的日志文件,您可以考虑使用日志文件的滚动策略来降低文件大小。
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属性可以在应用程序的根目录下创建concretepage/logs目录,并默认使用spring.log作为文件名保存日志文件。另外,您可以通过设置logging.pattern.console属性来指定控制台上的日志样式,以便更好地显示日志信息。
Sping Boot 默认输出ERROR , WARN , INFO 级别的日志。我们可以通过命令行使能DEBUG ,TRACE级别的日志输出,效果是跟配置文件一样的。想象我们有一个名为my-app.jar的可执行的JAR包我们可以在启动应用是使能DEBUG级别日志输出。
java -jar my-app.jar --debug
debug=true
debug:true
java -jar my-app.jar --trace
trace=true
trace: true
spring-boot-starter-logging
是Spring Boot提供的一个用于配置日志相关依赖的starter,它提供了对常见的日志框架的支持,包括Logback、Log4j2和Java Util Logging(JUL)。
使用spring-boot-starter-logging
可以方便地配置和使用日志框架,并且能够自动适配多种不同的日志框架,使得开发者能够快速地切换和选择适合自己的日志框架。
在使用spring-boot-starter-logging
时,可以通过配置文件来自定义日志级别、日志格式和输出目标等信息。比如,可以使用application.properties
配置文件来配置日志输出的格式:
logging.pattern.console=%d{HH:mm:ss.SSS} [%thread] %level %logger{36} - %msg%n
该配置将格式化控制台输出的日志信息,以小时:分钟:秒.毫秒、线程id、日志级别、logger名称和消息的形式输出。
此外,Spring Boot还提供了对于常见的日志框架的自动配置,如自动配置Logback日志框架,即可以使用logback.xml
或logback-spring.xml
进行配置,这些配置文件需要放置在classpath路径下,Spring Boot会自动地读取和解析这些配置文件来进行日志的记录。
总之,spring-boot-starter-logging
为开发者提供了一个便捷、易用的日志配置和使用解决方案,能够让开发者更加专注于业务代码的开发,而不必花费过多的精力来配置和处理日志相关的细节问题。