| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- <?xml version="1.0" encoding="UTF-8"?>
- <configuration scan="true" scanPeriod="60 seconds">
- <!-- 日志目录,可通过 logging.file.path 或环境变量 LOG_PATH 覆盖 -->
- <springProperty scope="context" name="LOG_PATH" source="logging.file.path" defaultValue="logs"/>
- <!-- 单文件大小上限,建议 200MB~500MB -->
- <springProperty scope="context" name="MAX_FILE_SIZE" source="logging.logback.rollingpolicy.max-file-size" defaultValue="300MB"/>
- <!-- 保留天数 -->
- <springProperty scope="context" name="MAX_HISTORY" source="logging.logback.rollingpolicy.max-history" defaultValue="60"/>
- <!-- 所有归档日志总大小上限 -->
- <springProperty scope="context" name="TOTAL_SIZE_CAP" source="logging.logback.rollingpolicy.total-size-cap" defaultValue="20GB"/>
- <property name="APP_NAME" value="fs-admin"/>
- <property name="LOG_CHARSET" value="UTF-8"/>
- <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"/>
- <!-- 控制台(UTF-8,配合 -Dfile.encoding=UTF-8 与 LANG=zh_CN.UTF-8) -->
- <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
- <pattern>${LOG_PATTERN}</pattern>
- <charset>${LOG_CHARSET}</charset>
- <immediateFlush>true</immediateFlush>
- </encoder>
- </appender>
- <!--
- 按「日期 + 大小」滚动,归档为 UTF-8 文本再 gzip:
- - 每天凌晨跨日自动切割(fileNamePattern 含 yyyy-MM-dd)
- - 单文件超过 MAX_FILE_SIZE 时在同一天内继续切割(.%i)
- -->
- <appender name="FILE_ALL" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <file>${LOG_PATH}/${APP_NAME}.log</file>
- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
- <pattern>${LOG_PATTERN}</pattern>
- <charset>${LOG_CHARSET}</charset>
- <immediateFlush>true</immediateFlush>
- </encoder>
- <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
- <fileNamePattern>${LOG_PATH}/archive/${APP_NAME}.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
- <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
- <maxHistory>${MAX_HISTORY}</maxHistory>
- <totalSizeCap>${TOTAL_SIZE_CAP}</totalSizeCap>
- <cleanHistoryOnStart>false</cleanHistoryOnStart>
- </rollingPolicy>
- </appender>
- <!-- ERROR 单独归档(UTF-8) -->
- <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <file>${LOG_PATH}/${APP_NAME}-error.log</file>
- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
- <pattern>${LOG_PATTERN}</pattern>
- <charset>${LOG_CHARSET}</charset>
- <immediateFlush>true</immediateFlush>
- </encoder>
- <filter class="ch.qos.logback.classic.filter.LevelFilter">
- <level>ERROR</level>
- <onMatch>ACCEPT</onMatch>
- <onMismatch>DENY</onMismatch>
- </filter>
- <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
- <fileNamePattern>${LOG_PATH}/archive/${APP_NAME}-error.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
- <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
- <maxHistory>${MAX_HISTORY}</maxHistory>
- <totalSizeCap>${TOTAL_SIZE_CAP}</totalSizeCap>
- </rollingPolicy>
- </appender>
- <root level="INFO">
- <appender-ref ref="CONSOLE"/>
- <appender-ref ref="FILE_ALL"/>
- <appender-ref ref="FILE_ERROR"/>
- </root>
- <logger name="com.fs" level="WARN"/>
- <logger name="org.springframework" level="WARN"/>
- </configuration>
|