说说在 logback中如何配置日志的控制台输出与文件输出

·  阅读 1426

通常情况下,日志是由一个抽象层 + 实现层的组合来搭建[i]

spring-boot-starter 其中包含了 spring-boot-starter-logging ,该依赖内容就是 Spring Boot 默认的日志框架 logback,所以实际开发中我们不需要直接添加该依赖[ii]

因为我们需要对日志进行更多控制,所以需要增加 logback配置。

在项目的 resources 文件夹内新建一个名为 logback-spring.xml 文件。logback-spring.xml 只有在Spring应用程序运行的时候才生效,即带有@SpringBootApplication注解的类启动的时候才会生效[iii]

logback-spring.xml配置主要包含 节点,在它之下有四个常用的子节点:root、contextName、property、appender。

我们一般先配置 property节点,定义好变量;接着定义控制台和文件的 appender,最后使用 root 来引用之前配置好的 appender。contextName 节点很少使用。

完整配置文件如下:

<?xml version="1.0" encoding="UTF-8"?>

<configuration debug="false">

 <!--设置存储路径变量-->

 <property name="LOG_HOME" value="./log"/>

 <!--控制台输出appender-->

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

 <!--设置输出格式-->

 <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>

 <!--设置编码-->

 <charset>UTF-8</charset>

 </encoder>

 </appender>

 <!--文件输出,时间窗口滚动-->

 <appender name="timeFileOutput" class="ch.qos.logback.core.rolling.RollingFileAppender">

 <!--日志名,指定最新的文件名,其他文件名使用FileNamePattern -->

 <File>${LOG_HOME}/xx/info.log</File>

 <!--文件滚动模式-->

 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

 <!--日志文件输出的文件名,可设置文件类型为gz,开启文件压缩-->

 <FileNamePattern>${LOG_HOME}/xx/info.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern>

 <!--日志文件保留天数-->

 <MaxHistory>3000</MaxHistory>

 <!--按大小分割同一天的-->

 <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">

 <maxFileSize>10MB</maxFileSize>

 </timeBasedFileNamingAndTriggeringPolicy>

 </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>

 <!--设置编码-->

 <charset>UTF-8</charset>

 </encoder>

 </appender>

 <!--指定基础的日志输出级别-->

 <root level="INFO">

 <appender-ref ref="console"/>

  <appender-ref ref="timeFileOutput"/>

 </root>

</configuration>
复制代码

运行结果:

比较重要的地方是以下几点:

  • 设置日志文件所在的根路径LOG_HOME;
  • 设置日志输出格式pattern,其中 %logger{50} 中的 50 表示可以显示的最大字符数;

日志配置项可以根据业务工程要求进行修改,具体说明如下: 当日志文件超过单个文件最大容量时,会进行分割,形如:


[i] SpringBoot 日记——日志框架篇

[ii] springboot 中日志的使用

[iii] logback.xml和logback-spring.xml的区别

分类:
后端
标签:
分类:
后端
标签:
收藏成功!
已添加到「」, 点击更改