mirror of
https://gitee.com/mateos/mateclaw.git
synced 2026-09-13 11:13:43 +08:00
132 lines
5.6 KiB
XML
132 lines
5.6 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
||
<configuration scan="true" scanPeriod="30 seconds">
|
||
|
||
<!-- ======================== 属性定义 ======================== -->
|
||
<!-- Override with MATECLAW_LOG_HOME so IDE, CLI and packaged launches
|
||
converge on one explicit directory instead of silently writing to
|
||
different cwd-relative locations. -->
|
||
<property name="LOG_HOME" value="${MATECLAW_LOG_HOME:-./logs}"/>
|
||
<property name="APP_NAME" value="mateclaw"/>
|
||
<!-- 保留天数 -->
|
||
<property name="MAX_HISTORY" value="30"/>
|
||
<!-- 单个日志文件最大体积 -->
|
||
<property name="MAX_FILE_SIZE" value="50MB"/>
|
||
<!-- 同类型日志总大小上限 -->
|
||
<property name="TOTAL_SIZE_CAP" value="1GB"/>
|
||
<!-- 日志格式 -->
|
||
<property name="LOG_PATTERN"
|
||
value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
|
||
<property name="CONSOLE_PATTERN"
|
||
value="%d{HH:mm:ss.SSS} %highlight(%-5level) %cyan(%logger{36}) - %msg%n"/>
|
||
|
||
<!-- ======================== Console 输出 ======================== -->
|
||
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||
<encoder>
|
||
<pattern>${CONSOLE_PATTERN}</pattern>
|
||
<charset>UTF-8</charset>
|
||
</encoder>
|
||
</appender>
|
||
|
||
<!-- ======================== 全量日志(INFO 及以上) ======================== -->
|
||
<appender name="FILE_ALL" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||
<file>${LOG_HOME}/${APP_NAME}.log</file>
|
||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||
<fileNamePattern>${LOG_HOME}/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>
|
||
</rollingPolicy>
|
||
<encoder>
|
||
<pattern>${LOG_PATTERN}</pattern>
|
||
<charset>UTF-8</charset>
|
||
</encoder>
|
||
</appender>
|
||
|
||
<!-- ======================== 错误日志(ERROR 专属) ======================== -->
|
||
<appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||
<file>${LOG_HOME}/${APP_NAME}-error.log</file>
|
||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||
<level>ERROR</level>
|
||
</filter>
|
||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||
<fileNamePattern>${LOG_HOME}/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>
|
||
<encoder>
|
||
<pattern>${LOG_PATTERN}</pattern>
|
||
<charset>UTF-8</charset>
|
||
</encoder>
|
||
</appender>
|
||
|
||
<!-- ======================== DEBUG 日志文件 ======================== -->
|
||
<appender name="FILE_DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||
<file>${LOG_HOME}/${APP_NAME}-debug.log</file>
|
||
<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.SizeAndTimeBasedRollingPolicy">
|
||
<fileNamePattern>${LOG_HOME}/archive/${APP_NAME}-debug.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
|
||
<maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
|
||
<maxHistory>7</maxHistory>
|
||
<totalSizeCap>500MB</totalSizeCap>
|
||
</rollingPolicy>
|
||
<encoder>
|
||
<pattern>${LOG_PATTERN}</pattern>
|
||
<charset>UTF-8</charset>
|
||
</encoder>
|
||
</appender>
|
||
|
||
<!-- ======================== Logger 配置 ======================== -->
|
||
|
||
<!-- 应用日志(dev/default 环境:DEBUG + 写 debug 文件) -->
|
||
<springProfile name="default | dev">
|
||
<logger name="vip.mate" level="DEBUG" additivity="false">
|
||
<appender-ref ref="CONSOLE"/>
|
||
<appender-ref ref="FILE_ALL"/>
|
||
<appender-ref ref="FILE_ERROR"/>
|
||
<appender-ref ref="FILE_DEBUG"/>
|
||
</logger>
|
||
</springProfile>
|
||
|
||
<!-- 应用日志(非 dev 环境:INFO,不写 debug 文件) -->
|
||
<springProfile name="prod | mysql">
|
||
<logger name="vip.mate" level="INFO" additivity="false">
|
||
<appender-ref ref="CONSOLE"/>
|
||
<appender-ref ref="FILE_ALL"/>
|
||
<appender-ref ref="FILE_ERROR"/>
|
||
</logger>
|
||
</springProfile>
|
||
|
||
<!-- Spring AI -->
|
||
<logger name="org.springframework.ai" level="INFO"/>
|
||
|
||
<!-- Spring 框架 -->
|
||
<logger name="org.springframework" level="WARN"/>
|
||
<logger name="org.springframework.web" level="INFO"/>
|
||
<logger name="org.springframework.boot" level="INFO"/>
|
||
|
||
<!-- 第三方库降噪 -->
|
||
<logger name="org.apache.http" level="WARN"/>
|
||
<logger name="com.zaxxer.hikari" level="INFO"/>
|
||
<logger name="io.netty" level="WARN"/>
|
||
|
||
<!-- Tool discovery runs for every fresh agent instance; per-bean DEBUG
|
||
lines obscure the actual graph and task lifecycle signals. -->
|
||
<logger name="vip.mate.tool.ToolRegistry" level="INFO"/>
|
||
|
||
<!-- 飞书 SDK:确保事件处理异常不被过滤(SDK 内部 HandlerNotFoundException 等) -->
|
||
<logger name="com.lark.oapi" level="WARN"/>
|
||
|
||
<!-- ======================== Root ======================== -->
|
||
<root level="INFO">
|
||
<appender-ref ref="CONSOLE"/>
|
||
<appender-ref ref="FILE_ALL"/>
|
||
<appender-ref ref="FILE_ERROR"/>
|
||
</root>
|
||
|
||
</configuration>
|