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

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

作者: deniro | 来源:发表于2021-06-20 09:12 被阅读0次

    通常情况下,日志是由一个抽象层 + 实现层的组合来搭建[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配置主要包含 <configuration> 节点,在它之下有四个常用的子节点: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的区别

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/xxwdyltx.html