背景

  • 在项目中,日志需要根据不同项目环境进行处理,比如记录日志级别,日志留存时间等。
  • 我们需要在不同的yml文件中设置变量,logback文件中动态获取参数,进行日志配置。

方法

  • yml文件
log:
  file:
    path: /data/appLogs/miner/miner-cron-logs/  #日志目录
    maxhistory: 30  #留存天数
  • logback文件使用
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<configuration>
    <!-- 日志文件存储位置 -->
    <springProperty scope="context" name="logPath" source="log.file.path" defaultValue="logs"/>
    <!-- 日志最大存活时间(天),默认30天 -->
    <springProperty scope="context" name="maxHistory" source="log.file.maxhistory" defaultValue="30"/>


    <appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志保存目录 -->
        <param name="file" value="${logPath}/debugger.log"/>
        <param name="Encoding" value="UTF-8"/>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logPath}/%d{yyyy-MM-dd,aux}/debug.%d{yyyy-MM-dd}.log
            </fileNamePattern>
            <!-- 日志保存时间 -->
            <maxHistory>${maxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d [%p %t %X{ip} %X{flag} %F:%L] - %m%n</pattern>
        </encoder>
    </appender>
</configuration>