| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- <?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="/home/fs-live-ws/logs"/>
- <!-- 单文件大小上限:超过后自动切割 -->
- <springProperty scope="context" name="MAX_FILE_SIZE" source="logging.logback.rollingpolicy.max-file-size" defaultValue="200MB"/>
- <!-- 归档日志保留天数,超过自动删除 -->
- <springProperty scope="context" name="MAX_HISTORY" source="logging.logback.rollingpolicy.max-history" defaultValue="15"/>
- <!-- 所有归档日志总大小上限(兜底) -->
- <springProperty scope="context" name="TOTAL_SIZE_CAP" source="logging.logback.rollingpolicy.total-size-cap" defaultValue="10GB"/>
- <property name="APP_NAME" value="fs-live-ws"/>
- <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"/>
- <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>
- <!--
- 按「日期 + 大小」滚动,归档 gzip 压缩:
- - 每天跨日自动切割
- - 单文件超过 200MB 时在同一天内继续切割(.%i)
- - 超过 15 天的归档自动删除
- -->
- <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>
- <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>
- <cleanHistoryOnStart>false</cleanHistoryOnStart>
- </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="INFO"/>
- <logger name="org.springframework" level="WARN"/>
- <logger name="io.netty" level="WARN"/>
- </configuration>
|