当前位置: 代码迷 >> 综合 >> (二)Springboot集成使用logback日志框架【具体步骤】
  详细解决方案

(二)Springboot集成使用logback日志框架【具体步骤】

热度:49   发布时间:2023-12-26 12:07:08.0

系列文章目录

参考:https://www.bilibili.com/video/BV1gW411W76m?p=21


文章目录

  • 系列文章目录
  • 前言
  • 开始整合
    • 1 配置信息
    • 2 关于使用


前言

Springboot框架已经整合了logback依赖,因此不再需要再引入 日志依赖
关于日志系统的配置文件,官方推荐我们使用logback-spring.xml 而不是 logback.xml
因此我们在resources(classpath路径)下创建一个名为logback-spring.xml的配置文件

图示:
在这里插入图片描述


开始整合

1 配置信息

创建好下面提到的.xml文件以后,在文件中填写以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration scan="true" scanPeriod="10 seconds"><!--<include resource="org/springframework/boot/logging/logback/base.xml" /> --><contextName>Logback For Boss</contextName><!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 --><property name="log.path" value="F:/locakback" /><!-- 定义日志文件 输入位置 --><property name="logDir" value="F:/logbak" /><!-- 日志最大的历史 30天 --><property name="maxHistory" value="30" /><!-- 控制台输出日志 --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger-%msg%n</pattern><charset class="java.nio.charset.Charset">UTF-8</charset></encoder></appender><!-- ERROR级别日志 --><appender name="ERROR"class="ch.qos.logback.core.rolling.RollingFileAppender"><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter><rollingPolicyclass="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${logDir}\%d{yyyyMMdd}\error.log</fileNamePattern><maxHistory>${maxHistory}</maxHistory></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger -%msg%n</pattern><charset class="java.nio.charset.Charset">UTF-8</charset></encoder><append>false</append><prudent>false</prudent></appender><!-- WARN级别日志 --><appender name="WARN"class="ch.qos.logback.core.rolling.RollingFileAppender"><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>WARN</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter><rollingPolicyclass="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${logDir}\%d{yyyyMMdd}\warn.log</fileNamePattern><maxHistory>${maxHistory}</maxHistory></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger-%msg%n</pattern><charset class="java.nio.charset.Charset">UTF-8</charset></encoder><append>false</append><prudent>false</prudent></appender><!-- INFO级别日志 --><appender name="INFO"class="ch.qos.logback.core.rolling.RollingFileAppender"><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>INFO</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter><rollingPolicyclass="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${logDir}\%d{yyyyMMdd}\info.log</fileNamePattern><maxHistory>${maxHistory}</maxHistory></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger-%msg%n</pattern><charset class="java.nio.charset.Charset">UTF-8</charset></encoder><append>false</append><prudent>false</prudent></appender><!-- DEBUG级别日志 --><appender name="DEBUG"class="ch.qos.logback.core.rolling.RollingFileAppender"><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>DEBUG</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter><rollingPolicyclass="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${logDir}\%d{yyyyMMdd}\debug.log</fileNamePattern><maxHistory>${maxHistory}</maxHistory></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger-%msg%n</pattern><charset class="java.nio.charset.Charset">UTF-8</charset></encoder><append>false</append><prudent>false</prudent></appender><!--文件日志, 按照每天生成日志文件 --><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件输出的文件名--><FileNamePattern>${logDir}/%d{yyyyMMdd}/boss.%d{yyyy-MM-dd}.log</FileNamePattern><!--日志文件保留天数--><MaxHistory>30</MaxHistory></rollingPolicy><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern></encoder><!--日志文件最大的大小--><triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><MaxFileSize>10MB</MaxFileSize></triggeringPolicy></appender><!-- 异步输出 --><appender name="dayLogAsyncAppender" class="ch.qos.logback.classic.AsyncAppender"><includeCallerData>true</includeCallerData><!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 --><discardingThreshold>0</discardingThreshold><!-- 更改默认的队列的深度,该值会影响性能.默认值为256 --><queueSize>512</queueSize><appender-ref ref="FILE"/></appender><!--专为 spring 定制--><logger name="org.springframework" level="info"/><!-- show parameters for hibernate sql 专为 Hibernate 定制 --><logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" /><logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="DEBUG" /><logger name="org.hibernate.SQL" level="DEBUG" /><logger name="org.hibernate.engine.QueryParameters" level="DEBUG" /><logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" /><!--myibatis log configure--><!-- <logger name="com.apache.ibatis" level="TRACE"/><logger name="java.sql.Connection" level="DEBUG"/><logger name="java.sql.Statement" level="DEBUG"/><logger name="java.sql.PreparedStatement" level="DEBUG"/>--><!-- root级别 DEBUG --><root level="INFO"><!-- 控制台输出 --><appender-ref ref="STDOUT" /><!-- 文件输出 --><appender-ref ref="ERROR" /><appender-ref ref="INFO" /><appender-ref ref="WARN" /><appender-ref ref="DEBUG" /></root>
</configuration>

然后,在application.yml或者application.properties配置文件中指定日志系统使用的配置文件,如下图所示:
在这里插入图片描述
然后呢,就可以在开发中使用了。

2 关于使用

使用的方法有两种:

方式1:引入@Lombok注解后,在类头上使用@slf4j注解,就会自动注入一个log对象,我们就可以来使用了。

在这里插入图片描述

方式2:手动创建Logger对象

直接看下图的代码
在这里插入图片描述

看到19行和41行,就是我关于日志输出对象的定义 和 使用。

手动创建
private final static Logger log = LoggerFactory.getLogger(HttpClientUtil.class);
getLogger()中传入的类对象就是需要使用日志的类,比如我当前这个HttpClientUtil类想要使用日志功能,就在构建的时候传入该类。

通常,我们在开发中都是直接使用第一种方式(Lombok,@Slf4j)获得Logger对象,在类上添加该注解,默认就给我们生成了一个名叫log的Logger对象,直接在方法内通过log调用相应的方法即可.

  相关解决方案