Springboot按天生成日志文件

原文链接:https://blog.csdn.net/weixin_47798667/article/details/131846942

 1:首先再yml文件上加上配置

  1.  
    logging:
  2.  
    config: classpath:logback-spring.xml

2:新建一个logback-spring.xml文件

 文件内容是如下

  1.  
    <?xml version="1.0" encoding="UTF-8"?>
  2.  
    <configuration>
  3.  
    <property name="LOG_CONTEXT_NAME" value="log"/>
  4.  
    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
  5.  
    <property name="LOG_HOME" value="logs/${LOG_CONTEXT_NAME}" />
  6.  
    <!-- 定义日志上下文的名称 -->
  7.  
    <contextName>${LOG_CONTEXT_NAME}</contextName>
  8.  
    <!-- 控制台输出 -->
  9.  
    <!--<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  10.  
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  11.  
    &lt;!&ndash;格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符&ndash;&gt;
  12.  
    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{50}:%L) - %msg%n</pattern>
  13.  
    <charset>utf-8</charset>
  14.  
    </encoder>
  15.  
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
  16.  
    <level>INFO</level>
  17.  
    </filter>
  18.  
    </appender>-->
  19.  
     
  20.  
     
  21.  
    <!-- 彩色日志依赖的渲染类 -->
  22.  
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
  23.  
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
  24.  
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
  25.  
    <!-- 彩色日志格式 -->
  26.  
    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
  27.  
     
  28.  
    <!--1. 输出到控制台-->
  29.  
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  30.  
    <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
  31.  
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
  32.  
    <level>INFO</level>
  33.  
    </filter>
  34.  
    <encoder>
  35.  
    <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
  36.  
    <!-- 设置字符集 -->
  37.  
    <charset>UTF-8</charset>
  38.  
    </encoder>
  39.  
    </appender>
  40.  
     
  41.  
    <!--info日志统一输出到这里-->
  42.  
    <appender name="file.info" class="ch.qos.logback.core.rolling.RollingFileAppender">
  43.  
    <Prudent>true</Prudent>
  44.  
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  45.  
    <!--日志文件输出的文件名,按小时生成-->
  46.  
    <FileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}/info/info.%d{yyyy-MM-dd-HH}.%i.log</FileNamePattern>
  47.  
    <!--日志文件保留天数-->
  48.  
    <MaxHistory>30</MaxHistory>
  49.  
    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  50.  
    <!-- 除按日志记录之外,还配置了日志文件不能超过10M(默认),若超过10M,日志文件会以索引0开始, -->
  51.  
    <maxFileSize>10MB</maxFileSize>
  52.  
    </timeBasedFileNamingAndTriggeringPolicy>
  53.  
    </rollingPolicy>
  54.  
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  55.  
    <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %method 方法名 %L 行数 %msg:日志消息,%n是换行符-->
  56.  
    <pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{56}.%method:%L - %msg%n</pattern>
  57.  
    <charset>utf-8</charset>
  58.  
    </encoder>
  59.  
    <!-- 此日志文件只记录info级别的 -->
  60.  
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
  61.  
    <level>INFO</level>
  62.  
    <onMatch>ACCEPT</onMatch>
  63.  
    <onMismatch>DENY</onMismatch>
  64.  
    </filter>
  65.  
    </appender>
  66.  
     
  67.  
     
  68.  
    <!--错误日志统一输出到这里-->
  69.  
    <appender name="file.error" class="ch.qos.logback.core.rolling.RollingFileAppender">
  70.  
    <Prudent>true</Prudent>
  71.  
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  72.  
    <!--日志文件输出的文件名,按天生成-->
  73.  
    <FileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}/error/error.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
  74.  
    <!--日志文件保留天数-->
  75.  
    <MaxHistory>30</MaxHistory>
  76.  
    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  77.  
    <!-- 除按日志记录之外,还配置了日志文件不能超过10M(默认),若超过10M,日志文件会以索引0开始, -->
  78.  
    <maxFileSize>10MB</maxFileSize>
  79.  
    </timeBasedFileNamingAndTriggeringPolicy>
  80.  
    </rollingPolicy>
  81.  
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  82.  
    <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %method 方法名 %L 行数 %msg:日志消息,%n是换行符-->
  83.  
    <pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{56}.%method:%L - %msg%n</pattern>
  84.  
    <charset>utf-8</charset>
  85.  
    </encoder>
  86.  
    <!-- 此日志文件只记录error级别的 -->
  87.  
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
  88.  
    <level>ERROR</level>
  89.  
    <onMatch>ACCEPT</onMatch>
  90.  
    <onMismatch>DENY</onMismatch>
  91.  
    </filter>
  92.  
    </appender>
  93.  
     
  94.  
    <!--warn日志统一输出到这里-->
  95.  
    <appender name="file.warn" class="ch.qos.logback.core.rolling.RollingFileAppender">
  96.  
    <Prudent>true</Prudent>
  97.  
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  98.  
    <FileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}/warn/warn.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
  99.  
    <!--日志文件保留天数-->
  100.  
    <MaxHistory>30</MaxHistory>
  101.  
    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  102.  
    <!-- 除按日志记录之外,还配置了日志文件不能超过10M(默认),若超过10M,日志文件会以索引0开始, -->
  103.  
    <maxFileSize>10MB</maxFileSize>
  104.  
    </timeBasedFileNamingAndTriggeringPolicy>
  105.  
    </rollingPolicy>
  106.  
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  107.  
    <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %method 方法名 %L 行数 %msg:日志消息,%n是换行符-->
  108.  
    <pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{56}.%method:%L - %msg%n</pattern>
  109.  
    <charset>utf-8</charset>
  110.  
    </encoder>
  111.  
    <!-- 此日志文件只记录warn级别的 -->
  112.  
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
  113.  
    <level>WARN</level>
  114.  
    <onMatch>ACCEPT</onMatch>
  115.  
    <onMismatch>DENY</onMismatch>
  116.  
    </filter>
  117.  
    </appender>
  118.  
     
  119.  
     
  120.  
     
  121.  
    <!-- 日志输出级别 -->
  122.  
    <root level="DEBUG">
  123.  
    <appender-ref ref="STDOUT" />
  124.  
    <appender-ref ref="file.error" />
  125.  
    <appender-ref ref="file.info" />
  126.  
    <appender-ref ref="file.warn" />
  127.  
    </root>
  128.  
     
  129.  
    </configuration>

3:生成的日志文件如下

4:测试info 和error

 

 此时日志文件会保存错误打印的日志了

posted @ 2024-07-12 18:00  枫树湾河桥  阅读(9)  评论(0编辑  收藏  举报
Live2D