Spring Boot 2.x 日志配置 与 指定 Logback 日志配置文件.
发布日期:2021-06-23 19:02:44 浏览次数:11 分类:技术文章

本文共 6261 字,大约阅读时间需要 20 分钟。

目录


Spring Boot 日志依赖关系

Spring boot 官网文档:

1、Sping-boot-starter 是Spring Boot 启动器,每一个 Spring boot 应用都会依赖到它

2、Sping-boot-starter 依赖 Sping-boot-starter-looging

3、Spring Boot 底层默认使用 slf4j+的方式进行日志记录

4、Spring Boot 使用中间替换包把其的日志框架都替换成了slf4j;

5、所以开发中如果要引入其他框架,则一定要把这个框架的默认日志依赖移除掉,否则会起冲突。如 Spring 框架默认用的是commons-logging;而 Spring Boot 底层用的就是Spring ,所以自己也要移除掉Spring 的日志框架:

org.springframework
spring‐core
commons‐logging
commons‐logging

6、总而言之:Spring Boot 能自动适配所有的日志框架,且底层使用 slf4j+logback 的方式记录日志,引入其他框架的时候,只需要把这个框架依赖的日志框架排除掉即可;

日志配置项全局设置

1、日志的级别由低到高分别为:trace(跟踪) < debug(调试) < info(信息) < warn(警告) < error(错误)

2、在配置文件中调整输出的日志级别,日志就只会在这个级别及以后的高级别生效,Spring Boot 默认使用 info 级别。

import org.junit.Test;import org.junit.runner.RunWith;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;import java.util.Date;@RunWith(SpringRunner.class)@SpringBootTestpublic class CocoApplicationTests {    /**     * 获取日志记录器     */    private static Logger logger = LoggerFactory.getLogger(CocoApplicationTests.class);    @Test    public void contextLoads() {        logger.trace("这是 trace 日志...");        logger.debug("这是 debug 日志...");        logger.info("这是 info 日志...");        logger.warn("这是 warn 日志...");        logger.error("这是 error 日志...");    }}

3、Spring Boot 的全局配置文件 "application.properties"或者"application.yml" 中可以修改日志配置项:

# 指定特定包下面所有类的日志输出级别,未指定的仍然按Spring Boot的默认级别 info 输出.logging.level.com.lct=debug#表示在当前项目根目录下生成app.log日志文件,可以是绝对路径或者相对路径,如 logging.file: logs/app.txtlogging.file=app.log# 在项目根路径下创建spring/log目录,然后使用 spring.log 作为默认日志文件,可以使用绝对或者相对路径# 当 logging.path 与 logging.file 同时配置时,则以 logging.file 为准,logging.path 此时不再生效logging.path=spring/log# 指定控制台输出的日志格式,如:# %d{yyyy-MM-dd HH:mm:ss} -- [%thread] %-5level %logger{50} %msg%n# 1、%d 表示日期时间,# 2、%thread 表示线程名,# 3、%‐5level 级别从左显示5个字符宽度# 4、%logger{50} 表示logger名字最长50个字符,否则按照句点分割。# 5、%msg 日志消息,# 6、%n 换行符logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} -- [%thread] %-5level %logger{50} %msg%nlogging.pattern.file=%d{yyyy-MM-dd HH:mm} -- [%thread] %-5level %logger{50} %msg%n

1、默认情况下,日志文件超过10M 时,会新建文件进行递增,比如 spring.log、spring1.log、spring2.log.....,可以使用 logging.file.max-size 更改大小限制。

2、默认情况下,日志只记录到控制台,不写入日志文件,如果要在控制台输出之外写入到日志文件,则需要设置 logging.file 或 logging.path 属性

6、Spring boot 日志全部配置项:

# LOGGINGlogging.config= # Location of the logging configuration file. For instance, `classpath:logback.xml` for Logback.logging.exception-conversion-word=%wEx # Conversion word used when logging exceptions.logging.file= # 日志文件名(例如"app.log"). 名称可以绝对路径或者相对路径logging.file.max-history=0 # Maximum of archive log files to keep. Only supported with the default logback setup.logging.file.max-size=10MB # Maximum log file size. Only supported with the default logback setup.logging.level.*= # 指定特定包下面所有类的日志输出级别,未指定的仍然按Spring Boot的默认级别 info 输出.如 logging.level.org.springframework=DEBUG.logging.path= # 日志文件的位置。例如,`/var/log`,与 logging.file 同时存在时,以 logging.file 优先.logging.pattern.console= # 用于输出到控制台的追加器模式。仅支持默认的日志恢复设置。logging.pattern.dateformat=yyyy-MM-dd HH:mm:ss.SSS # Appender pattern for log date format. Supported only with the default Logback setup.logging.pattern.file= #用于输出到文件的追加器模式。仅支持默认的日志恢复设置。logging.pattern.level=%5p # Appender pattern for log level. Supported only with the default Logback setup.logging.register-shutdown-hook=false # Register a shutdown hook for the logging system when it is initialized.

7、这些配置是非常有用的,比如命令行启动一个 jar 包,但是它一执行就自动报错,然后退出了,都来不急看清错误信息,此时则可以拷贝出它的配置文件(如 application.yml),然后加上一句:logging.file: logs/app.txt,表示在当前目录下生成日志文件,接着再次启动时,错误信息就会自动存放进去。

Log Levels 日志级别

1、通过配置 logging.level.<logger name>=<level> 可以设置所有受支持的日志系统的日志级别,其中 level 是 TRACE、DEBUG、INFO、WARN、ERROR、FATAL 或 OFF 之一。官网

2、可以使用 logging.level.root 配置根日志记录器:

logging.level.root=WARN  #根节点日志级别,即整个应用的日志级别设置,默认为 infologging.level.org.springframework.web=DEBUG   #单独某个包的日志级别设置,spring web 包日志输出级别logging.level.org.hibernate=ERROR    # 单独某个包的日志级别设置,hibernate 日志输出级别logging.level.com.wmx=info  #自己项目中指定包下的日志输出级别#未特别指定的仍然按 Spring Boot 的默认的 logging.level.root 设置输出.

Log Groups

1、将相关的记录器组合在一起,以便可以同时对它们进行配置,这通常是很有用的。Spring Boot 允许在 Spring 环境中定义日志组。例如下面通过将 “tomcat” 组添加到 application.properties 中来定义它:

logging.group.tomcat=org.apache.catalina, org.apache.coyote, org.apache.tomcat

2、定义后,可以用一行更改组中所有记录器的级别:

logging.level.tomcat=TRACE

3、Spring Boot 包括以下预定义的日志记录组,可以开箱即用:

Name Loggers

web

org.springframework.core.codec, org.springframework.http, org.springframework.web

sql

org.springframework.jdbc.core, org.hibernate.SQL

指定 Logback 日志配置文件

1、可以直接在 Spring Boot 的全局配置文件中修改 slf4j 的默认配置,也可以使用 slf4j 实现框架的自己的配置文件。直接放置再类路径下即可,

2、,根据日志记录系统的不同,各自的配置文件文件也不同:

Logging System Customization
                                                                logback-spring.xml , logback-spring.groovy , logback.xml or logback.groovy
Log4j2 log4j2-spring.xml or log4j2.xml
JDK (Java Util
Logging)
logging.properties

3、因为 Spring Boot 底层默认采用 slf4j+logback 的日志组合,所以这里以 logback 的 logback.xml 为例,将配置为文件放入到类路径下(其它的日志框架实现也是同理)。

%d{yyyy-MM-dd HH:mm:ss.SSS} ==> [%thread] ==> %-5level %logger{50} : %line - %msg%n
${LOG_HOME}/${appName}.txt
${LOG_HOME}/${appName}-%d{yyyy-MM-dd}-%i.log
365
100MB
%d{yyyy-MM-dd HH:mm:ss.SSS} [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - %msg%n
<property name="LOG_HOME" value="logs"/>:定义日志存放的根目录,可以是相对路径,或者绝对路径(E:/temp/logs).
<property name="appName" value="systemLog"></property>:定义日志文件名称.
<file>${LOG_HOME}/${appName}.txt</file>:指定日志文件存放的全路径.
<logger name="com.wmx" level="debug"/>:指定应用中指定包路径下的输出日志类型、级别,必须根据实际情况改写成自己的.
<root level="INFO">:root 与 logger 是父子关系,没有指定 logger 的,全部统一用 root 配置的日志级别处理.

转载地址:https://wangmaoxiong.blog.csdn.net/article/details/81044147 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:微信小程序
下一篇:微信小程序

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年03月30日 04时44分38秒