【新增】运行日志

This commit is contained in:
MichaelWin
2026-02-09 16:22:19 +08:00
parent facff46bb6
commit 1c1f407d27
7 changed files with 495 additions and 108 deletions

View File

@@ -0,0 +1,34 @@
package com.corewing.app.common.aspect;
import ch.qos.logback.classic.pattern.ClassicConverter;
import ch.qos.logback.classic.spi.ILoggingEvent;
import com.corewing.app.util.CommonTraceIdUtil;
import org.springframework.stereotype.Component;
@Component
public class CustomTraceIdConverter extends ClassicConverter {
// 使用常量避免重复创建字符串
private static final String LEFT_BRACKET = "[";
private static final String RIGHT_BRACKET = "]";
// 缓存StringBuilder以减少对象创建
private static final ThreadLocal<StringBuilder> bufferHolder =
ThreadLocal.withInitial(() -> new StringBuilder(64));
@Override
public String convert(ILoggingEvent event) {
StringBuilder buffer = bufferHolder.get();
buffer.setLength(0);
String traceId = CommonTraceIdUtil.getTraceId();
buffer.append(LEFT_BRACKET);
if (traceId != null && !traceId.isEmpty()) {
buffer.append(traceId);
} else {
buffer.append(event.getThreadName());
}
buffer.append(RIGHT_BRACKET);
return buffer.toString();
}
}

View File

@@ -0,0 +1,42 @@
package com.corewing.app.util;
import cn.hutool.core.util.StrUtil;
import jakarta.servlet.http.HttpServletRequest;
import java.util.UUID;
public class CommonTraceIdUtil {
public static final String TRACE_ID_STRING = "traceId";
private static final InheritableThreadLocal<String> TRACE_ID = new InheritableThreadLocal<>();
public static String generateTraceId(HttpServletRequest request) {
String header = request.getHeader(TRACE_ID_STRING);
if (header != null) {
return header;
}
return UUID.randomUUID().toString().replace(StrUtil.DASHED, StrUtil.EMPTY);
}
public static String getTraceId() {
return TRACE_ID.get();
}
public static String getTraceId(HttpServletRequest request) {
String traceId = getTraceId();
if (traceId == null) {
traceId = generateTraceId(request);
setTraceId(traceId);
}
return traceId;
}
public static void setTraceId(String traceId) {
TRACE_ID.set(traceId);
}
public static void clear() {
TRACE_ID.remove();
}
}

View File

@@ -0,0 +1,107 @@
# 数据源配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://120.24.204.180:3306/app?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.username=app
spring.datasource.password=AB636NGhhH2cC5A5
# Druid 连接池配置
spring.datasource.druid.initial-size=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-active=20
spring.datasource.druid.max-wait=60000
spring.datasource.druid.test-while-idle=true
spring.datasource.druid.test-on-borrow=false
spring.datasource.druid.test-on-return=false
spring.datasource.druid.time-between-eviction-runs-millis=60000
spring.datasource.druid.min-evictable-idle-time-millis=300000
spring.datasource.druid.validation-query=SELECT 1
spring.datasource.druid.pool-prepared-statements=true
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
# 配置监控统计拦截的filters去掉后监控界面sql无法统计'wall'用于防火墙
spring.datasource.druid.filters=stat,wall
# 通过connectProperties属性来打开mergeSql功能慢SQL记录
spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# MyBatis-Plus 配置
mybatis-plus.mapper-locations=classpath*:/mapper/**/*.xml
mybatis-plus.type-aliases-package=com.corewing.app.entity
mybatis-plus.configuration.map-underscore-to-camel-case=true
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
mybatis-plus.global-config.db-config.id-type=ASSIGN_ID
mybatis-plus.global-config.db-config.table-prefix=
# ========== 逻辑删除核心配置 ==========
# 1. 自定义逻辑删除字段名(替换为你的字段,如 is_delete、del_flag 等)
mybatis-plus.global-config.db-config.logic-delete-field=del_flag
# 2. 逻辑未删除值(替换为你的业务未删除值,如 0、false、N 等)
mybatis-plus.global-config.db-config.logic-not-delete-value=NOT_DELETE
# 3. 逻辑已删除值(替换为你的业务已删除值,如 1、true、Y 等)
mybatis-plus.global-config.db-config.logic-delete-value=DELETE
# Redis 配置
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=
spring.redis.database=0
spring.redis.timeout=3000
spring.redis.lettuce.pool.max-active=8
spring.redis.lettuce.pool.max-idle=8
spring.redis.lettuce.pool.min-idle=0
spring.redis.lettuce.pool.max-wait=-1ms
# MongoDB 配置
#spring.data.mongodb.host=120.24.204.180
#spring.data.mongodb.database=app
#spring.data.mongodb.port=27017
# Sa-Token 配置
sa-token.token-name=Authorization
sa-token.timeout=2592000
sa-token.active-timeout=-1
sa-token.is-concurrent=true
sa-token.is-share=true
sa-token.token-style=uuid
sa-token.is-log=false
# 短信宝配置
# 请前往 https://www.smsbao.com/ 注册账号并获取用户名和密码
smsbao.username=corewing
smsbao.password=755dc3ac40c94d319cf6e314f24dc659
# 邮件配置
# SMTP 服务器地址
spring.mail.host=smtp.em.dingtalk.com
# SMTP 服务器端口465 为 SSL 加密端口)
spring.mail.port=465
# 发件人邮箱
spring.mail.username=dev@corewing.com
# 邮箱授权码(不是邮箱密码!需要在邮箱设置中开启 SMTP 服务并获取授权码)
spring.mail.password=t035gngwYl0xgvZF
# 编码格式
spring.mail.default-encoding=UTF-8
# 其他配置
spring.mail.properties.mail.smtp.auth=true
# 465 端口使用 SSL 加密,需要启用 SSL
spring.mail.properties.mail.smtp.ssl.enable=true
spring.mail.properties.mail.smtp.ssl.required=true
# SSL Socket Factory 配置
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.smtp.socketFactory.port=465
spring.mail.properties.mail.smtp.socketFactory.fallback=false
# 钉钉机器人配置
# 请前往钉钉群设置 -> 智能群助手 -> 添加机器人 -> 自定义机器人,获取 Webhook 地址和密钥
dingtalk.webhook=https://oapi.dingtalk.com/robot/send?access_token=7eed4b3483303c9ec71ef37a08c347bb597fd4c64211a96a8f55f72405ff6444
# 如果使用加签安全设置请填写密钥secret
dingtalk.secret=SEC0f2b835f28139905e3c0b5be979b215df1735f1154f36514aafbae8708014148
# ===================== Knife4j 核心增强配置 =====================
# 启用Knife4j增强模式
knife4j.enable=true
knife4j.setting.language=zh_cn
knife4j.basic.enable=true
knife4j.basic.username=corewing
knife4j.basic.password=Aaa123..

View File

@@ -0,0 +1,107 @@
# 数据源配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/app?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.username=app
spring.datasource.password=AB636NGhhH2cC5A5
# Druid 连接池配置
spring.datasource.druid.initial-size=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-active=20
spring.datasource.druid.max-wait=60000
spring.datasource.druid.test-while-idle=true
spring.datasource.druid.test-on-borrow=false
spring.datasource.druid.test-on-return=false
spring.datasource.druid.time-between-eviction-runs-millis=60000
spring.datasource.druid.min-evictable-idle-time-millis=300000
spring.datasource.druid.validation-query=SELECT 1
spring.datasource.druid.pool-prepared-statements=true
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
# 配置监控统计拦截的filters去掉后监控界面sql无法统计'wall'用于防火墙
spring.datasource.druid.filters=stat,wall
# 通过connectProperties属性来打开mergeSql功能慢SQL记录
spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# MyBatis-Plus 配置
mybatis-plus.mapper-locations=classpath*:/mapper/**/*.xml
mybatis-plus.type-aliases-package=com.corewing.app.entity
mybatis-plus.configuration.map-underscore-to-camel-case=true
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
mybatis-plus.global-config.db-config.id-type=ASSIGN_ID
mybatis-plus.global-config.db-config.table-prefix=
# ========== 逻辑删除核心配置 ==========
# 1. 自定义逻辑删除字段名(替换为你的字段,如 is_delete、del_flag 等)
mybatis-plus.global-config.db-config.logic-delete-field=del_flag
# 2. 逻辑未删除值(替换为你的业务未删除值,如 0、false、N 等)
mybatis-plus.global-config.db-config.logic-not-delete-value=NOT_DELETE
# 3. 逻辑已删除值(替换为你的业务已删除值,如 1、true、Y 等)
mybatis-plus.global-config.db-config.logic-delete-value=DELETE
# Redis 配置
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=
spring.redis.database=0
spring.redis.timeout=3000
spring.redis.lettuce.pool.max-active=8
spring.redis.lettuce.pool.max-idle=8
spring.redis.lettuce.pool.min-idle=0
spring.redis.lettuce.pool.max-wait=-1ms
# MongoDB 配置
#spring.data.mongodb.host=120.24.204.180
#spring.data.mongodb.database=app
#spring.data.mongodb.port=27017
# Sa-Token 配置
sa-token.token-name=Authorization
sa-token.timeout=2592000
sa-token.active-timeout=-1
sa-token.is-concurrent=true
sa-token.is-share=true
sa-token.token-style=uuid
sa-token.is-log=false
# 短信宝配置
# 请前往 https://www.smsbao.com/ 注册账号并获取用户名和密码
smsbao.username=corewing
smsbao.password=755dc3ac40c94d319cf6e314f24dc659
# 邮件配置
# SMTP 服务器地址
spring.mail.host=smtp.em.dingtalk.com
# SMTP 服务器端口465 为 SSL 加密端口)
spring.mail.port=465
# 发件人邮箱
spring.mail.username=dev@corewing.com
# 邮箱授权码(不是邮箱密码!需要在邮箱设置中开启 SMTP 服务并获取授权码)
spring.mail.password=t035gngwYl0xgvZF
# 编码格式
spring.mail.default-encoding=UTF-8
# 其他配置
spring.mail.properties.mail.smtp.auth=true
# 465 端口使用 SSL 加密,需要启用 SSL
spring.mail.properties.mail.smtp.ssl.enable=true
spring.mail.properties.mail.smtp.ssl.required=true
# SSL Socket Factory 配置
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.smtp.socketFactory.port=465
spring.mail.properties.mail.smtp.socketFactory.fallback=false
# 钉钉机器人配置
# 请前往钉钉群设置 -> 智能群助手 -> 添加机器人 -> 自定义机器人,获取 Webhook 地址和密钥
dingtalk.webhook=https://oapi.dingtalk.com/robot/send?access_token=7eed4b3483303c9ec71ef37a08c347bb597fd4c64211a96a8f55f72405ff6444
# 如果使用加签安全设置请填写密钥secret
dingtalk.secret=SEC0f2b835f28139905e3c0b5be979b215df1735f1154f36514aafbae8708014148
# ===================== Knife4j 核心增强配置 =====================
# 启用Knife4j增强模式
knife4j.enable=true
knife4j.setting.language=zh_cn
knife4j.basic.enable=true
knife4j.basic.username=corewing
knife4j.basic.password=Aaa123..

View File

@@ -0,0 +1,107 @@
# 数据源配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/app?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
# Druid 连接池配置
spring.datasource.druid.initial-size=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-active=20
spring.datasource.druid.max-wait=60000
spring.datasource.druid.test-while-idle=true
spring.datasource.druid.test-on-borrow=false
spring.datasource.druid.test-on-return=false
spring.datasource.druid.time-between-eviction-runs-millis=60000
spring.datasource.druid.min-evictable-idle-time-millis=300000
spring.datasource.druid.validation-query=SELECT 1
spring.datasource.druid.pool-prepared-statements=true
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
# 配置监控统计拦截的filters去掉后监控界面sql无法统计'wall'用于防火墙
spring.datasource.druid.filters=stat,wall
# 通过connectProperties属性来打开mergeSql功能慢SQL记录
spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# MyBatis-Plus 配置
mybatis-plus.mapper-locations=classpath*:/mapper/**/*.xml
mybatis-plus.type-aliases-package=com.corewing.app.entity
mybatis-plus.configuration.map-underscore-to-camel-case=true
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
mybatis-plus.global-config.db-config.id-type=ASSIGN_ID
mybatis-plus.global-config.db-config.table-prefix=
# ========== 逻辑删除核心配置 ==========
# 1. 自定义逻辑删除字段名(替换为你的字段,如 is_delete、del_flag 等)
mybatis-plus.global-config.db-config.logic-delete-field=del_flag
# 2. 逻辑未删除值(替换为你的业务未删除值,如 0、false、N 等)
mybatis-plus.global-config.db-config.logic-not-delete-value=NOT_DELETE
# 3. 逻辑已删除值(替换为你的业务已删除值,如 1、true、Y 等)
mybatis-plus.global-config.db-config.logic-delete-value=DELETE
# Redis 配置
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=
spring.redis.database=0
spring.redis.timeout=3000
spring.redis.lettuce.pool.max-active=8
spring.redis.lettuce.pool.max-idle=8
spring.redis.lettuce.pool.min-idle=0
spring.redis.lettuce.pool.max-wait=-1ms
# MongoDB 配置
#spring.data.mongodb.host=120.24.204.180
#spring.data.mongodb.database=app
#spring.data.mongodb.port=27017
# Sa-Token 配置
sa-token.token-name=Authorization
sa-token.timeout=2592000
sa-token.active-timeout=-1
sa-token.is-concurrent=true
sa-token.is-share=true
sa-token.token-style=uuid
sa-token.is-log=false
# 短信宝配置
# 请前往 https://www.smsbao.com/ 注册账号并获取用户名和密码
smsbao.username=corewing
smsbao.password=755dc3ac40c94d319cf6e314f24dc659
# 邮件配置
# SMTP 服务器地址
spring.mail.host=smtp.em.dingtalk.com
# SMTP 服务器端口465 为 SSL 加密端口)
spring.mail.port=465
# 发件人邮箱
spring.mail.username=dev@corewing.com
# 邮箱授权码(不是邮箱密码!需要在邮箱设置中开启 SMTP 服务并获取授权码)
spring.mail.password=t035gngwYl0xgvZF
# 编码格式
spring.mail.default-encoding=UTF-8
# 其他配置
spring.mail.properties.mail.smtp.auth=true
# 465 端口使用 SSL 加密,需要启用 SSL
spring.mail.properties.mail.smtp.ssl.enable=true
spring.mail.properties.mail.smtp.ssl.required=true
# SSL Socket Factory 配置
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.smtp.socketFactory.port=465
spring.mail.properties.mail.smtp.socketFactory.fallback=false
# 钉钉机器人配置
# 请前往钉钉群设置 -> 智能群助手 -> 添加机器人 -> 自定义机器人,获取 Webhook 地址和密钥
dingtalk.webhook=https://oapi.dingtalk.com/robot/send?access_token=7eed4b3483303c9ec71ef37a08c347bb597fd4c64211a96a8f55f72405ff6444
# 如果使用加签安全设置请填写密钥secret
dingtalk.secret=SEC0f2b835f28139905e3c0b5be979b215df1735f1154f36514aafbae8708014148
# ===================== Knife4j 核心增强配置 =====================
# 启用Knife4j增强模式
knife4j.enable=true
knife4j.setting.language=zh_cn
knife4j.basic.enable=true
knife4j.basic.username=corewing
knife4j.basic.password=Aaa123..

View File

@@ -1,3 +1,11 @@
# spring profiles configuration
#########################################
#spring.profiles.active=local
spring.profiles.active=test
#spring.profiles.active=prod
#########################################
# 应用服务 WEB 访问端口
server.port=8080
@@ -5,110 +13,3 @@ server.port=8080
spring.servlet.multipart.max-file-size=100MB
# 一次请求中所有文件的总大小例如50MB
spring.servlet.multipart.max-request-size=100MB
# 数据源配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://120.24.204.180:3306/app?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.username=app
spring.datasource.password=AB636NGhhH2cC5A5
# Druid 连接池配置
spring.datasource.druid.initial-size=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-active=20
spring.datasource.druid.max-wait=60000
spring.datasource.druid.test-while-idle=true
spring.datasource.druid.test-on-borrow=false
spring.datasource.druid.test-on-return=false
spring.datasource.druid.time-between-eviction-runs-millis=60000
spring.datasource.druid.min-evictable-idle-time-millis=300000
spring.datasource.druid.validation-query=SELECT 1
spring.datasource.druid.pool-prepared-statements=true
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
# 配置监控统计拦截的filters去掉后监控界面sql无法统计'wall'用于防火墙
spring.datasource.druid.filters=stat,wall
# 通过connectProperties属性来打开mergeSql功能慢SQL记录
spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# MyBatis-Plus 配置
mybatis-plus.mapper-locations=classpath*:/mapper/**/*.xml
mybatis-plus.type-aliases-package=com.corewing.app.entity
mybatis-plus.configuration.map-underscore-to-camel-case=true
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
mybatis-plus.global-config.db-config.id-type=ASSIGN_ID
mybatis-plus.global-config.db-config.table-prefix=
# ========== 逻辑删除核心配置 ==========
# 1. 自定义逻辑删除字段名(替换为你的字段,如 is_delete、del_flag 等)
mybatis-plus.global-config.db-config.logic-delete-field=del_flag
# 2. 逻辑未删除值(替换为你的业务未删除值,如 0、false、N 等)
mybatis-plus.global-config.db-config.logic-not-delete-value=NOT_DELETE
# 3. 逻辑已删除值(替换为你的业务已删除值,如 1、true、Y 等)
mybatis-plus.global-config.db-config.logic-delete-value=DELETE
# Redis 配置
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=
spring.redis.database=0
spring.redis.timeout=3000
spring.redis.lettuce.pool.max-active=8
spring.redis.lettuce.pool.max-idle=8
spring.redis.lettuce.pool.min-idle=0
spring.redis.lettuce.pool.max-wait=-1ms
# MongoDB 配置
#spring.data.mongodb.host=120.24.204.180
#spring.data.mongodb.database=app
#spring.data.mongodb.port=27017
# Sa-Token 配置
sa-token.token-name=Authorization
sa-token.timeout=2592000
sa-token.active-timeout=-1
sa-token.is-concurrent=true
sa-token.is-share=true
sa-token.token-style=uuid
sa-token.is-log=false
# 短信宝配置
# 请前往 https://www.smsbao.com/ 注册账号并获取用户名和密码
smsbao.username=corewing
smsbao.password=755dc3ac40c94d319cf6e314f24dc659
# 邮件配置
# SMTP 服务器地址
spring.mail.host=smtp.em.dingtalk.com
# SMTP 服务器端口465 为 SSL 加密端口)
spring.mail.port=465
# 发件人邮箱
spring.mail.username=dev@corewing.com
# 邮箱授权码(不是邮箱密码!需要在邮箱设置中开启 SMTP 服务并获取授权码)
spring.mail.password=t035gngwYl0xgvZF
# 编码格式
spring.mail.default-encoding=UTF-8
# 其他配置
spring.mail.properties.mail.smtp.auth=true
# 465 端口使用 SSL 加密,需要启用 SSL
spring.mail.properties.mail.smtp.ssl.enable=true
spring.mail.properties.mail.smtp.ssl.required=true
# SSL Socket Factory 配置
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.smtp.socketFactory.port=465
spring.mail.properties.mail.smtp.socketFactory.fallback=false
# 钉钉机器人配置
# 请前往钉钉群设置 -> 智能群助手 -> 添加机器人 -> 自定义机器人,获取 Webhook 地址和密钥
dingtalk.webhook=https://oapi.dingtalk.com/robot/send?access_token=7eed4b3483303c9ec71ef37a08c347bb597fd4c64211a96a8f55f72405ff6444
# 如果使用加签安全设置请填写密钥secret
dingtalk.secret=SEC0f2b835f28139905e3c0b5be979b215df1735f1154f36514aafbae8708014148
# ===================== Knife4j 核心增强配置 =====================
# 启用Knife4j增强模式
knife4j.enable=true
knife4j.setting.language=zh_cn
knife4j.basic.enable=true
knife4j.basic.username=corewing
knife4j.basic.password=Aaa123..

View File

@@ -0,0 +1,89 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 引入 Spring Boot 2.6.x 的默认配置 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- 定义属性 -->
<springProperty scope="context" name="LOG_PATH" source="logging.file.path" defaultValue="./logs"/>
<!-- 自定义转换器 -->
<conversionRule conversionWord="tid" converterClass="com.corewing.app.common.aspect.CustomTraceIdConverter"/>
<!-- 修正:使用正确的属性名 -->
<property name="CONSOLE_LOG_PATTERN"
value="%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %tid %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
<!-- 文件日志格式 -->
<property name="FILE_LOG_PATTERN"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %tid %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
<!-- 本地环境 -->
<springProfile name="local">
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
</root>
<logger name="com.corewing.app" level="DEBUG" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
</springProfile>
<!-- 非本地环境 -->
<springProfile name="!local">
<!-- 控制台输出(用于捕获不到的日志) -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 错误日志 -->
<appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/error/error-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<maxFileSize>10MB</maxFileSize>
<maxHistory>30</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
<charset>UTF-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 所有日志 -->
<appender name="FILE_ALL" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/total/app-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<maxFileSize>10MB</maxFileSize>
<maxHistory>30</maxHistory>
<totalSizeCap>3GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE_ALL"/>
<appender-ref ref="FILE_ERROR"/>
</root>
</springProfile>
</configuration>