| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- <configuration>
- <property name="LOG_PATH" value="${LOG_PATH:-./logs}" />
- <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{requestId:-}] [%X{traceId:-}] [%X{spanId:-}] %-5level %logger{36} - %msg%n" />
- <!-- Console -->
- <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
- <encoder>
- <pattern>${LOG_PATTERN}</pattern>
- <charset>UTF-8</charset>
- </encoder>
- </appender>
- <!-- Detailed rolling file -->
- <appender name="FILE_DETAIL" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <file>${LOG_PATH}/app.log</file>
- <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
- <fileNamePattern>${LOG_PATH}/app.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
- <maxHistory>30</maxHistory>
- </rollingPolicy>
- <encoder>
- <pattern>${LOG_PATTERN}</pattern>
- <charset>UTF-8</charset>
- </encoder>
- </appender>
- <appender name="ASYNC_FILE" class="ch.qos.logback.classic.AsyncAppender">
- <appender-ref ref="FILE_DETAIL" />
- <queueSize>512</queueSize>
- <discardingThreshold>0</discardingThreshold>
- </appender>
- <!-- Error-only rolling file -->
- <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <file>${LOG_PATH}/error.log</file>
- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
- <level>WARN</level>
- </filter>
- <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
- <fileNamePattern>${LOG_PATH}/error.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
- <maxHistory>90</maxHistory>
- </rollingPolicy>
- <encoder>
- <pattern>${LOG_PATTERN}</pattern>
- <charset>UTF-8</charset>
- </encoder>
- </appender>
- <appender name="ASYNC_ERROR" class="ch.qos.logback.classic.AsyncAppender">
- <appender-ref ref="FILE_ERROR" />
- <queueSize>256</queueSize>
- </appender>
- <!-- Application logger -->
- <logger name="work.baiyun.chronicdiseaseapp" level="DEBUG" additivity="false">
- <appender-ref ref="CONSOLE" />
- <appender-ref ref="ASYNC_FILE" />
- </logger>
- <!-- Third-party libraries reduce noise -->
- <logger name="org.springframework" level="INFO" />
- <logger name="org.hibernate" level="WARN" />
- <logger name="com.zaxxer.hikari" level="WARN" />
- <logger name="org.apache" level="WARN" />
- <logger name="org.mybatis" level="WARN" />
- <!-- SQL logs (if needed) -->
- <logger name="work.baiyun.chronicdiseaseapp.mapper" level="DEBUG">
- <appender-ref ref="ASYNC_FILE" />
- </logger>
- <root level="INFO">
- <appender-ref ref="CONSOLE" />
- <appender-ref ref="ASYNC_FILE" />
- <appender-ref ref="ASYNC_ERROR" />
- </root>
- </configuration>
|