好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

springboot项目配置logback日志系统的实现

记录 springboot 项目配置 logback 日志文件管理:

logback依赖jar包

SpringBoot 项目配置 logback 理论上需要添加 logback-classic 依赖 jar 包:

<dependency> <groupId> ch.qos.logback </groupId> <artifactId> logback-classic </artifactId> <version> 1.2.3 </version> </dependency>

但是因为 SpringBoot 项目默认就是使用的就是 logback 日志系统 ,创建 SpringBoot 项目时引入的 spring-boot-starter 或者 spring-boot-starter-web 依赖 jar 包中已经包含了 spring-boot-starter-logging 的依赖,里面同时包含多种日志系统依赖,如下图所示:

包括logback和log4j,所以,无需额外添加依赖,直接配置 logback.xml 就可以了。

此外,如果需要切换为 log4j2 ,那么需要在 spring-boot-starter-web 依赖中排除 springboot 自带的 commons‐logging ,然后在引入 log4j2 的依赖 jar 包,如下所示:

<!--排除 commons‐logging--> <dependency> <groupId> org.springframework.boot </groupId> <artifactId> spring-boot-starter-web </artifactId> <exclusions> <exclusion> <groupId> commons‐logging </groupId> <artifactId> commons‐logging </artifactId> </exclusion> </exclusions> </dependency>   <!--引入log4j2 --> <dependency> <groupId> org.springframework.boot </groupId> <artifactId> spring-boot-starter-log4j2 </artifactId> </dependency>

logback的默认配置

前面说到 SpringBoot 项目默认使用 logback ,那么对于 logback 的配置情况, SpringBoot 又是如何定义的呢?

首先, SpringBoot 会从 resource 包下查找 logback-test.xml 或 logback.xml ,如果这两个都不存在,则会调用 BasicConfigurator ,创建一个最小化的基本配置。

最小化配置由一个关联到根 logger 的 ConsoleAppender 组成,默认输出模式为 %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n , root logger 级别为 DEBUG ,所以并不会生成日志文件,只会输出到控制台。

创建logback.xml配置文件

通过自定义 logback.xml 配置文件来控制日志输出情况,通常我们会配置三个日志组件:

控制台输出 输出info级别日志文件 输出error级别日志文件

以下为 logback.xml 完整配置

<!-- Logback configuration. See http://logback.qos.ch/manual/index.html --> <configuration scan = "true" scanPeriod = "2 seconds" > <!--定义日志文件的存储地址--> <property name = "LOG_PATH" value = "./logs" /> <!-- 控制台输出 --> <appender name = "STDOUT" class = "ch.qos.logback.core.ConsoleAppender" > <encoder class = "ch.qos.logback.classic.encoder.PatternLayoutEncoder" > <!--格式化输出:%d表示日期,%-5level:级别从左显示5个字符宽度,%t表示线程名,%msg:日志消息,%n是换行符--> <pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} --- [%t] %logger{50} - %msg%n </pattern> </encoder> </appender>   <!-- info级别日志文件输出 --> <appender name = "INFO_FILE" class = "ch.qos.logback.core.rolling.RollingFileAppender" > <!-- 日志文件输出的文件名 --> <File> ${LOG_PATH}/info.log </File> <rollingPolicy class = "ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy" > <!-- 每日生成日志文件或日志文件大小超出限制后输出的文件名模板 --> <fileNamePattern> ${LOG_PATH}/info-%d{yyyy-MM-dd}.%i.log </fileNamePattern> <!-- 日志文件保留天数 --> <maxHistory> 30 </maxHistory> <!-- 日志文件最大大小:100MB --> <maxFileSize> 100MB </maxFileSize> </rollingPolicy> <encoder class = "ch.qos.logback.classic.encoder.PatternLayoutEncoder" > <pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} --- [%t] %logger{50} - %msg%n </pattern> </encoder> </appender>   <!-- error级别日志文件输出 --> <appender name = "ERROR_FILE" class = "ch.qos.logback.core.rolling.RollingFileAppender" > <!-- 日志输出级别,优先级 > '<root level>' --> <filter class = "ch.qos.logback.classic.filter.ThresholdFilter" > <level> ERROR </level> </filter> <File> ${LOG_PATH}/error.log </File> <rollingPolicy class = "ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy" > <fileNamePattern> ${LOG_PATH}/error-%d{yyyy-MM-dd}.%i.log </fileNamePattern> <maxHistory> 30 </maxHistory> <maxFileSize> 100MB </maxFileSize> </rollingPolicy> <encoder class = "ch.qos.logback.classic.encoder.PatternLayoutEncoder" > <pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} --- [%t] %logger{50} - %msg%n </pattern> </encoder> </appender>   <!-- 默认日志输出级别 --> <root level = "INFO" > <appender-ref ref = "STDOUT" /> <appender-ref ref = "INFO_FILE" /> <appender-ref ref = "ERROR_FILE" /> </root>   </configuration>

logback配置说明

根节点configuration

<configuration scan = "true" scanPeriod = "2 seconds" debug = "false" >   </configuration>

configuration包含以下三个属性:

scan:配置文件发生更改时,进行重载,默认值为true scanPeriod:监测配置文件是否有修改的时间间隔,默认值为6000,默认单位为毫秒 debug:打印logback内部日志信息,实时查看logback运行状态,默认值为false

子节点property:

<property name = "LOG_PATH" value = "./logs" />

用来定义变量值,包含以下两个属性

name:变量名称 value:变量定义的值

通过 property 定义的值会被插入到 logger 上下文中,可以使 ${} 来使用变量,这里定义了 log 的保存位置根目录。

子节点appender:

<appender name = "STDOUT" class = "ch.qos.logback.core.ConsoleAppender" >   </appender>

是负责写日志的组件,通过自定义日志组件控制日志输出的情况,包含以下两个属性:

name:组件名称 class:组件class指定的类名

不同的class,对应不同的功能:

如 ch.qos.logback.core.ConsoleAppender 会把日志输出到控制台

ch.qos.logback.core.rolling.RollingFileAppender 把日志内容输出到指定文件

File节点:日志文件输出的文件名

<File> ${LOG_PATH}/info.log </File>

filter节点:过滤器,用来指定日志组件的日志输出级别,优先级高于root节点的level。

<filter class = "ch.qos.logback.classic.filter.ThresholdFilter" > <level> ERROR </level> </filter>

rollingPolicy节点:

滚动日志文件配置,涉及日志文件的移动和重命名,只有一个 class 属性,用来指定滚动策略,这里使用的是 ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy

包含以下三个属性:

fileNamePattern:发生滚动时的日志命名方式 maxHistory:日志文件的最大保留时间,超过设定时间后会自动删除 maxFileSize:每份日志文件的最大限制,超出限制后会重新生成,并将旧的日志文件按照fileNamePattern设定的日志命名方式进行命名 <rollingPolicy class = "ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy" > <fileNamePattern> ${LOG_PATH}/error-%d{yyyy-MM-dd}.%i.log </fileNamePattern> <maxHistory> 30 </maxHistory> <maxFileSize> 100MB </maxFileSize> </rollingPolicy>

子节点encoder

<encoder class = "ch.qos.logback.classic.encoder.PatternLayoutEncoder" > <pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} --- [%t] %logger{50} - %msg%n </pattern> </encoder>

对记录事件进行格式化,负责两件事,一是把日志信息转换成字节数组,二是把字节数组写入到输出流。
PatternLayoutEncoder 是唯一有用的且默认的encoder ,有一个

节点,用来设置日志的输入格式。使用[%]加[转换符]方式,如果要输出[%],则必须用[\]对[%]进行转义。

子节点root

根 loger ,是所有 loger 的最上级,且只有一个 level 节点,用类设置打印日志的级别,默认值为 debug ,通常设置为 info ,此外还有 trace、warn、error、all、off 级别。
子节点 appender-ref的ref 属性指定日志组件名称,即 appender 的 name 属性值。

使用logback

在 yml 文件中增加 logging.config 指定配置文件地址,命名为logback 时可以不需要配置, SpringBoot`会自动查找。

level 设置指定路径下的日志输出级别。

logging : config : classpath : logback . xml level : com : springboot : debug

如图所示,项目启动后,访问接口输出日志内容并生成指定日志文件:

内容参考

博客园-ryelqy-logback的使用和logback.xml详解

到此这篇关于springboot项目配置logback日志系统的实现的文章就介绍到这了,更多相关springboot配置logback日志系统内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

原文链接:https://www.cnblogs.com/dandelion200/p/14673985.html

查看更多关于springboot项目配置logback日志系统的实现的详细内容...

  阅读:23次