refactor: 标准化微服务命名并添加日志配置
- 将所有微服务名称添加 aioj- 前缀 (auth-service -> aioj-auth-service) - 更新网关路由配置以使用新的服务名称 - 为所有服务添加 logback-spring.xml 日志配置 - 更新 .gitignore 排除 uploads 和 logs 目录 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
5
.gitignore
vendored
5
.gitignore
vendored
@@ -40,3 +40,8 @@ build/
|
|||||||
|
|
||||||
### mybatis plus generator
|
### mybatis plus generator
|
||||||
/generator/
|
/generator/
|
||||||
|
|
||||||
|
### Uploads ###
|
||||||
|
/uploads/
|
||||||
|
### Logs ###
|
||||||
|
/logs/
|
||||||
@@ -6,7 +6,7 @@ import org.springframework.cloud.openfeign.FeignClient;
|
|||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
@FeignClient(name = "user-service", path = "/api/v1/user")
|
@FeignClient(name = "aioj-user-service", path = "/api/v1/user")
|
||||||
public interface UserClient {
|
public interface UserClient {
|
||||||
|
|
||||||
@GetMapping("/inner/get-by-username")
|
@GetMapping("/inner/get-by-username")
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
spring:
|
spring:
|
||||||
application:
|
application:
|
||||||
name: auth-service
|
name: aioj-auth-service
|
||||||
data:
|
data:
|
||||||
redis:
|
redis:
|
||||||
host: 10.0.0.10
|
host: 10.0.0.10
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
spring:
|
spring:
|
||||||
application:
|
application:
|
||||||
name: auth-service
|
name: aioj-auth-service
|
||||||
profiles:
|
profiles:
|
||||||
active: @env@
|
active: @env@
|
||||||
devtools:
|
devtools:
|
||||||
@@ -37,3 +37,6 @@ jwt:
|
|||||||
secret: "12345678901234567890123456789012" # 至少32字节!!
|
secret: "12345678901234567890123456789012" # 至少32字节!!
|
||||||
access-expire: 900000 # 24小时
|
access-expire: 900000 # 24小时
|
||||||
refresh-expire: 604800000 # 7天
|
refresh-expire: 604800000 # 7天
|
||||||
|
logging:
|
||||||
|
file:
|
||||||
|
path: ./logs/${spring.application.name}
|
||||||
|
|||||||
110
aioj-backend-auth/src/main/resources/logback-spring.xml
Normal file
110
aioj-backend-auth/src/main/resources/logback-spring.xml
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--debug="false" 表示关闭 Logback 框架自身的内部状态信息打印。-->
|
||||||
|
<configuration scan="true" scanPeriod="10 seconds" debug="false">
|
||||||
|
<!-- 引入 spring boot 默认日志颜色和基础配置-->
|
||||||
|
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
|
||||||
|
<!-- 定义变量 APP_NAME,从 Spring 环境变量中获取 spring.application.name 的值-->
|
||||||
|
<springProperty scope="context" name="APP_NAME" source="spring.application.name"/>
|
||||||
|
|
||||||
|
<!-- 定义时间格式,yyyy-MM 表示年-月,yyyy-MM-dd 表示年-月-日-->
|
||||||
|
<timestamp key="time-month" datePattern="yyyy-MM"/>
|
||||||
|
<timestamp key="time-month-day" datePattern="yyyy-MM-dd"/>
|
||||||
|
<!-- 定义变量 LOG_FILE_PATH,默认值为 ./logs/${APP_NAME},可以通过环境变量 LOG_PATH 覆盖 日志存储路径-->
|
||||||
|
<property name="LOG_FILE_PATH" value="${LOG_PATH:-./logs/${APP_NAME}}"/>
|
||||||
|
<!-- 定义日志格式
|
||||||
|
格式说明:
|
||||||
|
%d{yyyy-MM-dd HH:mm:ss.SSS}:日志记录时间,格式为年-月-日 时:分:秒.毫秒
|
||||||
|
[%thread]:日志记录线程名称
|
||||||
|
%-5level:日志级别,左对齐,占用 5 个字符宽度
|
||||||
|
%logger{50}:日志记录器名称,最多显示 50 个字符
|
||||||
|
-[%X{traceId:-}]:从 MDC 中获取 traceId 变量值,如果不存在则显示为空
|
||||||
|
%msg%n:日志消息内容,换行符
|
||||||
|
-->
|
||||||
|
<property name="FILE_LOG_PATTERN"
|
||||||
|
value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} -[%X{traceId:-}] %msg%n"/>
|
||||||
|
|
||||||
|
<!-- appender 控制台输出-->
|
||||||
|
<!--
|
||||||
|
<appender>: 这是 Logback 配置的根标签之一,用于定义一个日志输出目的地。
|
||||||
|
name="CONSOLE": 为这个 Appender 赋予一个唯一的名称,方便在 <root> 或 <logger> 标签中引用它。
|
||||||
|
class="ch.qos.logback.core.ConsoleAppender": 指定使用的实现类。
|
||||||
|
ConsoleAppender 是 Logback 库中专门用于将日志事件写入 System.out (标准输出) 或 System.err (标准错误) 的类。
|
||||||
|
这是我们在本地开发和测试时最常用的 Appender。
|
||||||
|
CONSOLE_LOG_PATTERN 是上面include的默认日志格式,这里直接引用即可
|
||||||
|
-->
|
||||||
|
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<encoder>
|
||||||
|
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 全量info日志-->
|
||||||
|
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${LOG_FILE_PATH}/${time-month}/${time-month-day}/info.log</file>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
|
<fileNamePattern>${LOG_FILE_PATH}/${time-month}/${time-month-day}/info.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
|
||||||
|
<maxFileSize>100MB</maxFileSize>
|
||||||
|
<maxHistory>31</maxHistory>
|
||||||
|
<totalSizeCap>100GB</totalSizeCap>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>${FILE_LOG_PATTERN}</pattern>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
</encoder>
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<!-- 只记录 INFO 级别以及以上的日志的日志 -->
|
||||||
|
<level>INFO</level>
|
||||||
|
</filter>
|
||||||
|
</appender>
|
||||||
|
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${LOG_FILE_PATH}/${time-month}/${time-month-day}/error.log</file>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
|
<fileNamePattern>${LOG_FILE_PATH}/${time-month}/${time-month-day}/error.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
|
||||||
|
<maxFileSize>100MB</maxFileSize>
|
||||||
|
<maxHistory>31</maxHistory>
|
||||||
|
<totalSizeCap>100GB</totalSizeCap>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>${FILE_LOG_PATTERN}</pattern>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
</encoder>
|
||||||
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||||
|
<!-- 只记录 ERROR 级别以及以上的日志的日志 -->
|
||||||
|
<level>ERROR</level>
|
||||||
|
<onMatch>ACCEPT</onMatch>
|
||||||
|
<onMismatch>DENY</onMismatch>
|
||||||
|
</filter>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 异步写入日志-->
|
||||||
|
<appender name="ASYNC_INFO"
|
||||||
|
class="ch.qos.logback.classic.AsyncAppender">
|
||||||
|
<discardingThreshold>0</discardingThreshold>
|
||||||
|
<queueSize>512</queueSize>
|
||||||
|
<appender-ref ref="INFO_FILE"/>
|
||||||
|
</appender>
|
||||||
|
<appender name="ASYNC_ERROR" class="ch.qos.logback.classic.AsyncAppender">
|
||||||
|
<discardingThreshold>0</discardingThreshold>
|
||||||
|
<queueSize>512</queueSize>
|
||||||
|
<appender-ref ref="ERROR_FILE"/>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- =========== 环境配置 打印到控制台 ===========-->
|
||||||
|
<springProfile name="dev">
|
||||||
|
<root level="INFO">
|
||||||
|
<appender-ref ref="CONSOLE"/>
|
||||||
|
<appender-ref ref="ASYNC_ERROR"/>
|
||||||
|
<appender-ref ref="ASYNC_INFO"/>
|
||||||
|
</root>
|
||||||
|
</springProfile>
|
||||||
|
|
||||||
|
<springProfile name="prod">
|
||||||
|
<root level="INFO">
|
||||||
|
<appender-ref ref="CONSOLE"/>
|
||||||
|
<appender-ref ref="ASYNC_ERROR"/>
|
||||||
|
<appender-ref ref="ASYNC_INFO"/>
|
||||||
|
</root>
|
||||||
|
</springProfile>
|
||||||
|
</configuration>
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
spring:
|
spring:
|
||||||
application:
|
application:
|
||||||
name: file-service
|
name: aioj-file-service
|
||||||
profiles:
|
profiles:
|
||||||
active: @env@
|
active: @env@
|
||||||
servlet:
|
servlet:
|
||||||
|
|||||||
111
aioj-backend-file-service/src/main/resources/logback-spring.xml
Normal file
111
aioj-backend-file-service/src/main/resources/logback-spring.xml
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--debug="false" 表示关闭 Logback 框架自身的内部状态信息打印。-->
|
||||||
|
<configuration scan="true" scanPeriod="10 seconds" debug="false">
|
||||||
|
<!-- 引入 spring boot 默认日志颜色和基础配置-->
|
||||||
|
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
|
||||||
|
<!-- 定义变量 APP_NAME,从 Spring 环境变量中获取 spring.application.name 的值-->
|
||||||
|
<springProperty scope="context" name="APP_NAME" source="spring.application.name"/>
|
||||||
|
|
||||||
|
<!-- 定义时间格式,yyyy-MM 表示年-月,yyyy-MM-dd 表示年-月-日-->
|
||||||
|
<timestamp key="time-month" datePattern="yyyy-MM"/>
|
||||||
|
<timestamp key="time-month-day" datePattern="yyyy-MM-dd"/>
|
||||||
|
<!-- 定义变量 LOG_FILE_PATH,默认值为 ./logs/${APP_NAME},可以通过环境变量 LOG_PATH 覆盖 日志存储路径-->
|
||||||
|
<property name="LOG_FILE_PATH" value="${LOG_PATH:-./logs/${APP_NAME}}"/>
|
||||||
|
<!-- 定义日志格式
|
||||||
|
格式说明:
|
||||||
|
%d{yyyy-MM-dd HH:mm:ss.SSS}:日志记录时间,格式为年-月-日 时:分:秒.毫秒
|
||||||
|
[%thread]:日志记录线程名称
|
||||||
|
%-5level:日志级别,左对齐,占用 5 个字符宽度
|
||||||
|
%logger{50}:日志记录器名称,最多显示 50 个字符
|
||||||
|
-[%X{traceId:-}]:从 MDC 中获取 traceId 变量值,如果不存在则显示为空
|
||||||
|
%msg%n:日志消息内容,换行符
|
||||||
|
-->
|
||||||
|
<property name="FILE_LOG_PATTERN"
|
||||||
|
value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} -[%X{traceId:-}] %msg%n"/>
|
||||||
|
|
||||||
|
<!-- appender 控制台输出-->
|
||||||
|
<!--
|
||||||
|
<appender>: 这是 Logback 配置的根标签之一,用于定义一个日志输出目的地。
|
||||||
|
name="CONSOLE": 为这个 Appender 赋予一个唯一的名称,方便在 <root> 或 <logger> 标签中引用它。
|
||||||
|
class="ch.qos.logback.core.ConsoleAppender": 指定使用的实现类。
|
||||||
|
ConsoleAppender 是 Logback 库中专门用于将日志事件写入 System.out (标准输出) 或 System.err (标准错误) 的类。
|
||||||
|
这是我们在本地开发和测试时最常用的 Appender。
|
||||||
|
CONSOLE_LOG_PATTERN 是上面include的默认日志格式,这里直接引用即可
|
||||||
|
-->
|
||||||
|
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<encoder>
|
||||||
|
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 全量info日志-->
|
||||||
|
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${LOG_FILE_PATH}/${time-month}/${time-month-day}/info.log</file>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
|
<fileNamePattern>${LOG_FILE_PATH}/${time-month}/${time-month-day}/info.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
|
||||||
|
<maxFileSize>100MB</maxFileSize>
|
||||||
|
<maxHistory>31</maxHistory>
|
||||||
|
<totalSizeCap>100GB</totalSizeCap>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>${FILE_LOG_PATTERN}</pattern>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
</encoder>
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<!-- 只记录 INFO 级别以及以上的日志的日志 -->
|
||||||
|
<level>INFO</level>
|
||||||
|
</filter>
|
||||||
|
</appender>
|
||||||
|
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${LOG_FILE_PATH}/${time-month}/${time-month-day}/error.log</file>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
|
<fileNamePattern>${LOG_FILE_PATH}/${time-month}/${time-month-day}/error.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
|
||||||
|
<maxFileSize>100MB</maxFileSize>
|
||||||
|
<maxHistory>31</maxHistory>
|
||||||
|
<totalSizeCap>100GB</totalSizeCap>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>${FILE_LOG_PATTERN}</pattern>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
</encoder>
|
||||||
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||||
|
<!-- 只记录 ERROR 级别以及以上的日志的日志 -->
|
||||||
|
<level>ERROR</level>
|
||||||
|
<onMatch>ACCEPT</onMatch>
|
||||||
|
<onMismatch>DENY</onMismatch>
|
||||||
|
</filter>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 异步写入日志-->
|
||||||
|
<appender name="ASYNC_INFO"
|
||||||
|
class="ch.qos.logback.classic.AsyncAppender">
|
||||||
|
<discardingThreshold>0</discardingThreshold>
|
||||||
|
<queueSize>512</queueSize>
|
||||||
|
<appender-ref ref="INFO_FILE"/>
|
||||||
|
</appender>
|
||||||
|
<appender name="ASYNC_ERROR" class="ch.qos.logback.classic.AsyncAppender">
|
||||||
|
<discardingThreshold>0</discardingThreshold>
|
||||||
|
<queueSize>512</queueSize>
|
||||||
|
<appender-ref ref="ERROR_FILE"/>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- =========== 环境配置 打印到控制台 ===========-->
|
||||||
|
<springProfile name="dev">
|
||||||
|
<root level="INFO">
|
||||||
|
<appender-ref ref="CONSOLE"/>
|
||||||
|
<appender-ref ref="ASYNC_ERROR"/>
|
||||||
|
<appender-ref ref="ASYNC_INFO"/>
|
||||||
|
</root>
|
||||||
|
</springProfile>
|
||||||
|
|
||||||
|
<springProfile name="prod">
|
||||||
|
<root level="INFO">
|
||||||
|
<appender-ref ref="CONSOLE"/>
|
||||||
|
<appender-ref ref="ASYNC_ERROR"/>
|
||||||
|
<appender-ref ref="ASYNC_INFO"/>
|
||||||
|
</root>
|
||||||
|
</springProfile>
|
||||||
|
|
||||||
|
</configuration>
|
||||||
@@ -2,8 +2,9 @@ server:
|
|||||||
port: 18085
|
port: 18085
|
||||||
error:
|
error:
|
||||||
include-stacktrace: never
|
include-stacktrace: never
|
||||||
|
|
||||||
spring:
|
spring:
|
||||||
|
application:
|
||||||
|
name: aioj-backend-gateway
|
||||||
profiles:
|
profiles:
|
||||||
active: @env@
|
active: @env@
|
||||||
cloud:
|
cloud:
|
||||||
@@ -13,28 +14,28 @@ spring:
|
|||||||
routes:
|
routes:
|
||||||
# auth服务 Swagger 文档路由
|
# auth服务 Swagger 文档路由
|
||||||
- id: auth-service-doc
|
- id: auth-service-doc
|
||||||
uri: lb://auth-service
|
uri: lb://aioj-auth-service
|
||||||
predicates:
|
predicates:
|
||||||
- Path=/auth-service/**
|
- Path=/auth-service/**
|
||||||
filters:
|
filters:
|
||||||
- StripPrefix=1
|
- StripPrefix=1
|
||||||
# user服务 Swagger 文档路由
|
# user服务 Swagger 文档路由
|
||||||
- id: user-service-doc
|
- id: user-service-doc
|
||||||
uri: lb://user-service
|
uri: lb://aioj-user-service
|
||||||
predicates:
|
predicates:
|
||||||
- Path=/user-service/**
|
- Path=/user-service/**
|
||||||
filters:
|
filters:
|
||||||
- StripPrefix=1
|
- StripPrefix=1
|
||||||
# auth服务 Swagger 文档路由
|
# auth服务 Swagger 文档路由
|
||||||
- id: file-service-doc
|
- id: file-service-doc
|
||||||
uri: lb://file-service
|
uri: lb://aioj-file-service
|
||||||
predicates:
|
predicates:
|
||||||
- Path=/file-service/**
|
- Path=/file-service/**
|
||||||
filters:
|
filters:
|
||||||
- StripPrefix=1
|
- StripPrefix=1
|
||||||
# auth业务接口
|
# auth业务接口路由
|
||||||
- id: auth-service
|
- id: auth-service
|
||||||
uri: lb://auth-service
|
uri: lb://aioj-auth-service
|
||||||
predicates:
|
predicates:
|
||||||
- Path=/api/v1/auth/**
|
- Path=/api/v1/auth/**
|
||||||
filters:
|
filters:
|
||||||
@@ -46,7 +47,7 @@ spring:
|
|||||||
firstBackoff: 50ms
|
firstBackoff: 50ms
|
||||||
maxBackoff: 500ms
|
maxBackoff: 500ms
|
||||||
- id: user-service
|
- id: user-service
|
||||||
uri: lb://user-service
|
uri: lb://aioj-user-service
|
||||||
predicates:
|
predicates:
|
||||||
- Path=/api/v1/user/**
|
- Path=/api/v1/user/**
|
||||||
filters:
|
filters:
|
||||||
@@ -58,7 +59,7 @@ spring:
|
|||||||
firstBackoff: 50ms
|
firstBackoff: 50ms
|
||||||
maxBackoff: 500ms
|
maxBackoff: 500ms
|
||||||
- id: file-service
|
- id: file-service
|
||||||
uri: lb://file-service
|
uri: lb://aioj-file-service
|
||||||
predicates:
|
predicates:
|
||||||
- Path=/api/v1/file/**
|
- Path=/api/v1/file/**
|
||||||
filters:
|
filters:
|
||||||
@@ -71,13 +72,14 @@ spring:
|
|||||||
maxBackoff: 500ms
|
maxBackoff: 500ms
|
||||||
# 文件访问路由(公开,直接转发不去前缀)
|
# 文件访问路由(公开,直接转发不去前缀)
|
||||||
- id: file-access
|
- id: file-access
|
||||||
uri: lb://file-service
|
uri: lb://aioj-file-service
|
||||||
predicates:
|
predicates:
|
||||||
- Path=/api/file/**
|
- Path=/api/file/**
|
||||||
# 设置应用启动后的就绪探针
|
# 设置应用启动后的就绪探针
|
||||||
lifecycle:
|
lifecycle:
|
||||||
timeout-per-shutdown-phase: 30s
|
timeout-per-shutdown-phase: 30s
|
||||||
|
|
||||||
|
|
||||||
aioj-backend-gateway:
|
aioj-backend-gateway:
|
||||||
# 白名单配置
|
# 白名单配置
|
||||||
white-list:
|
white-list:
|
||||||
@@ -93,3 +95,6 @@ aioj:
|
|||||||
log:
|
log:
|
||||||
enabled: true
|
enabled: true
|
||||||
max-length: 20000
|
max-length: 20000
|
||||||
|
logging:
|
||||||
|
file:
|
||||||
|
path: ./logs/${spring.application.name}
|
||||||
|
|||||||
120
aioj-backend-gateway/src/main/resources/logback-spring.xml
Normal file
120
aioj-backend-gateway/src/main/resources/logback-spring.xml
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--debug="false" 表示关闭 Logback 框架自身的内部状态信息打印。-->
|
||||||
|
<configuration scan="true" scanPeriod="10 seconds" debug="false">
|
||||||
|
<!-- 引入 spring boot 默认日志颜色和基础配置-->
|
||||||
|
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
|
||||||
|
<!-- 定义变量 APP_NAME,从 Spring 环境变量中获取 spring.application.name 的值-->
|
||||||
|
<springProperty scope="context" name="APP_NAME" source="spring.application.name"/>
|
||||||
|
|
||||||
|
<!-- 定义时间格式,yyyy-MM 表示年-月,yyyy-MM-dd 表示年-月-日-->
|
||||||
|
<timestamp key="time-month" datePattern="yyyy-MM"/>
|
||||||
|
<timestamp key="time-month-day" datePattern="yyyy-MM-dd"/>
|
||||||
|
<!-- 定义变量 LOG_FILE_PATH,默认值为 ./logs/${APP_NAME},可以通过环境变量 LOG_PATH 覆盖 日志存储路径-->
|
||||||
|
<property name="LOG_FILE_PATH" value="${LOG_PATH:-./logs/${APP_NAME}}"/>
|
||||||
|
<!-- 定义日志格式
|
||||||
|
格式说明:
|
||||||
|
%d{yyyy-MM-dd HH:mm:ss.SSS}:日志记录时间,格式为年-月-日 时:分:秒.毫秒
|
||||||
|
[%thread]:日志记录线程名称
|
||||||
|
%-5level:日志级别,左对齐,占用 5 个字符宽度
|
||||||
|
%logger{50}:日志记录器名称,最多显示 50 个字符
|
||||||
|
-[%X{traceId:-}]:从 MDC 中获取 traceId 变量值,如果不存在则显示为空
|
||||||
|
%msg%n:日志消息内容,换行符
|
||||||
|
-->
|
||||||
|
<property name="FILE_LOG_PATTERN"
|
||||||
|
value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} -[%X{traceId:-}] %msg%n"/>
|
||||||
|
|
||||||
|
<!-- appender 控制台输出-->
|
||||||
|
<!--
|
||||||
|
<appender>: 这是 Logback 配置的根标签之一,用于定义一个日志输出目的地。
|
||||||
|
name="CONSOLE": 为这个 Appender 赋予一个唯一的名称,方便在 <root> 或 <logger> 标签中引用它。
|
||||||
|
class="ch.qos.logback.core.ConsoleAppender": 指定使用的实现类。
|
||||||
|
ConsoleAppender 是 Logback 库中专门用于将日志事件写入 System.out (标准输出) 或 System.err (标准错误) 的类。
|
||||||
|
这是我们在本地开发和测试时最常用的 Appender。
|
||||||
|
CONSOLE_LOG_PATTERN 是上面include的默认日志格式,这里直接引用即可
|
||||||
|
-->
|
||||||
|
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<encoder>
|
||||||
|
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 全量info日志-->
|
||||||
|
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${LOG_FILE_PATH}/${time-month}/${time-month-day}/info.log</file>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
|
<fileNamePattern>${LOG_FILE_PATH}/${time-month}/${time-month-day}/info.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
|
||||||
|
<maxFileSize>100MB</maxFileSize>
|
||||||
|
<maxHistory>31</maxHistory>
|
||||||
|
<totalSizeCap>100GB</totalSizeCap>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>${FILE_LOG_PATTERN}</pattern>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
</encoder>
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<!-- 只记录 INFO 级别以及以上的日志的日志 -->
|
||||||
|
<level>INFO</level>
|
||||||
|
</filter>
|
||||||
|
</appender>
|
||||||
|
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${LOG_FILE_PATH}/${time-month}/${time-month-day}/error.log</file>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
|
<fileNamePattern>${LOG_FILE_PATH}/${time-month}/${time-month-day}/error.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
|
||||||
|
<maxFileSize>100MB</maxFileSize>
|
||||||
|
<maxHistory>31</maxHistory>
|
||||||
|
<totalSizeCap>100GB</totalSizeCap>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>${FILE_LOG_PATTERN}</pattern>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
</encoder>
|
||||||
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||||
|
<!-- 只记录 ERROR 级别以及以上的日志的日志 -->
|
||||||
|
<level>ERROR</level>
|
||||||
|
<onMatch>ACCEPT</onMatch>
|
||||||
|
<onMismatch>DENY</onMismatch>
|
||||||
|
</filter>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 异步写入日志-->
|
||||||
|
<appender name="ASYNC_INFO"
|
||||||
|
class="ch.qos.logback.classic.AsyncAppender">
|
||||||
|
<discardingThreshold>0</discardingThreshold>
|
||||||
|
<queueSize>512</queueSize>
|
||||||
|
<appender-ref ref="INFO_FILE"/>
|
||||||
|
</appender>
|
||||||
|
<appender name="ASYNC_ERROR" class="ch.qos.logback.classic.AsyncAppender">
|
||||||
|
<discardingThreshold>0</discardingThreshold>
|
||||||
|
<queueSize>512</queueSize>
|
||||||
|
<appender-ref ref="ERROR_FILE"/>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- =========== 环境配置 打印到控制台 ===========-->
|
||||||
|
<springProfile name="dev">
|
||||||
|
<root level="INFO">
|
||||||
|
<appender-ref ref="CONSOLE"/>
|
||||||
|
<appender-ref ref="ASYNC_ERROR"/>
|
||||||
|
<appender-ref ref="ASYNC_INFO"/>
|
||||||
|
</root>
|
||||||
|
</springProfile>
|
||||||
|
|
||||||
|
<springProfile name="prod">
|
||||||
|
<root level="INFO">
|
||||||
|
<appender-ref ref="CONSOLE"/>
|
||||||
|
<appender-ref ref="ASYNC_ERROR"/>
|
||||||
|
<appender-ref ref="ASYNC_INFO"/>
|
||||||
|
</root>
|
||||||
|
</springProfile>
|
||||||
|
<appender name="USER_LOG" class="ch.qos.logback.core.FileAppender">
|
||||||
|
<file>${LOG_FILE_PATH}/${time-month}/${time-month-day}/auth.log</file>
|
||||||
|
<encoder>
|
||||||
|
<pattern>${FILE_LOG_PATTERN}</pattern>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
<logger name="cn.meowrain.aioj.backend.gateway.filter.AuthGlobalFilter">
|
||||||
|
<appender-ref ref="USER_LOG"/>
|
||||||
|
</logger>
|
||||||
|
</configuration>
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
spring:
|
spring:
|
||||||
application:
|
application:
|
||||||
name: user-service
|
name: aioj-user-service
|
||||||
profiles:
|
profiles:
|
||||||
active: @env@
|
active: @env@
|
||||||
server:
|
server:
|
||||||
@@ -43,3 +43,6 @@ aioj:
|
|||||||
log:
|
log:
|
||||||
enabled: true
|
enabled: true
|
||||||
max-length: 20000
|
max-length: 20000
|
||||||
|
logging:
|
||||||
|
file:
|
||||||
|
path: ./logs/${spring.application.name}
|
||||||
|
|||||||
110
aioj-backend-user-service/src/main/resources/logback-spring.xml
Normal file
110
aioj-backend-user-service/src/main/resources/logback-spring.xml
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--debug="false" 表示关闭 Logback 框架自身的内部状态信息打印。-->
|
||||||
|
<configuration scan="true" scanPeriod="10 seconds" debug="false">
|
||||||
|
<!-- 引入 spring boot 默认日志颜色和基础配置-->
|
||||||
|
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
|
||||||
|
<!-- 定义变量 APP_NAME,从 Spring 环境变量中获取 spring.application.name 的值-->
|
||||||
|
<springProperty scope="context" name="APP_NAME" source="spring.application.name"/>
|
||||||
|
|
||||||
|
<!-- 定义时间格式,yyyy-MM 表示年-月,yyyy-MM-dd 表示年-月-日-->
|
||||||
|
<timestamp key="time-month" datePattern="yyyy-MM"/>
|
||||||
|
<timestamp key="time-month-day" datePattern="yyyy-MM-dd"/>
|
||||||
|
<!-- 定义变量 LOG_FILE_PATH,默认值为 ./logs/${APP_NAME},可以通过环境变量 LOG_PATH 覆盖 日志存储路径-->
|
||||||
|
<property name="LOG_FILE_PATH" value="${LOG_PATH:-./logs/${APP_NAME}}"/>
|
||||||
|
<!-- 定义日志格式
|
||||||
|
格式说明:
|
||||||
|
%d{yyyy-MM-dd HH:mm:ss.SSS}:日志记录时间,格式为年-月-日 时:分:秒.毫秒
|
||||||
|
[%thread]:日志记录线程名称
|
||||||
|
%-5level:日志级别,左对齐,占用 5 个字符宽度
|
||||||
|
%logger{50}:日志记录器名称,最多显示 50 个字符
|
||||||
|
-[%X{traceId:-}]:从 MDC 中获取 traceId 变量值,如果不存在则显示为空
|
||||||
|
%msg%n:日志消息内容,换行符
|
||||||
|
-->
|
||||||
|
<property name="FILE_LOG_PATTERN"
|
||||||
|
value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} -[%X{traceId:-}] %msg%n"/>
|
||||||
|
|
||||||
|
<!-- appender 控制台输出-->
|
||||||
|
<!--
|
||||||
|
<appender>: 这是 Logback 配置的根标签之一,用于定义一个日志输出目的地。
|
||||||
|
name="CONSOLE": 为这个 Appender 赋予一个唯一的名称,方便在 <root> 或 <logger> 标签中引用它。
|
||||||
|
class="ch.qos.logback.core.ConsoleAppender": 指定使用的实现类。
|
||||||
|
ConsoleAppender 是 Logback 库中专门用于将日志事件写入 System.out (标准输出) 或 System.err (标准错误) 的类。
|
||||||
|
这是我们在本地开发和测试时最常用的 Appender。
|
||||||
|
CONSOLE_LOG_PATTERN 是上面include的默认日志格式,这里直接引用即可
|
||||||
|
-->
|
||||||
|
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<encoder>
|
||||||
|
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 全量info日志-->
|
||||||
|
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${LOG_FILE_PATH}/${time-month}/${time-month-day}/info.log</file>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
|
<fileNamePattern>${LOG_FILE_PATH}/${time-month}/${time-month-day}/info.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
|
||||||
|
<maxFileSize>100MB</maxFileSize>
|
||||||
|
<maxHistory>31</maxHistory>
|
||||||
|
<totalSizeCap>100GB</totalSizeCap>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>${FILE_LOG_PATTERN}</pattern>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
</encoder>
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<!-- 只记录 INFO 级别以及以上的日志的日志 -->
|
||||||
|
<level>INFO</level>
|
||||||
|
</filter>
|
||||||
|
</appender>
|
||||||
|
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${LOG_FILE_PATH}/${time-month}/${time-month-day}/error.log</file>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
|
<fileNamePattern>${LOG_FILE_PATH}/${time-month}/${time-month-day}/error.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
|
||||||
|
<maxFileSize>100MB</maxFileSize>
|
||||||
|
<maxHistory>31</maxHistory>
|
||||||
|
<totalSizeCap>100GB</totalSizeCap>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>${FILE_LOG_PATTERN}</pattern>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
</encoder>
|
||||||
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||||
|
<!-- 只记录 ERROR 级别以及以上的日志的日志 -->
|
||||||
|
<level>ERROR</level>
|
||||||
|
<onMatch>ACCEPT</onMatch>
|
||||||
|
<onMismatch>DENY</onMismatch>
|
||||||
|
</filter>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 异步写入日志-->
|
||||||
|
<appender name="ASYNC_INFO"
|
||||||
|
class="ch.qos.logback.classic.AsyncAppender">
|
||||||
|
<discardingThreshold>0</discardingThreshold>
|
||||||
|
<queueSize>512</queueSize>
|
||||||
|
<appender-ref ref="INFO_FILE"/>
|
||||||
|
</appender>
|
||||||
|
<appender name="ASYNC_ERROR" class="ch.qos.logback.classic.AsyncAppender">
|
||||||
|
<discardingThreshold>0</discardingThreshold>
|
||||||
|
<queueSize>512</queueSize>
|
||||||
|
<appender-ref ref="ERROR_FILE"/>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- =========== 环境配置 打印到控制台 ===========-->
|
||||||
|
<springProfile name="dev">
|
||||||
|
<root level="INFO">
|
||||||
|
<appender-ref ref="CONSOLE"/>
|
||||||
|
<appender-ref ref="ASYNC_ERROR"/>
|
||||||
|
<appender-ref ref="ASYNC_INFO"/>
|
||||||
|
</root>
|
||||||
|
</springProfile>
|
||||||
|
|
||||||
|
<springProfile name="prod">
|
||||||
|
<root level="INFO">
|
||||||
|
<appender-ref ref="CONSOLE"/>
|
||||||
|
<appender-ref ref="ASYNC_ERROR"/>
|
||||||
|
<appender-ref ref="ASYNC_INFO"/>
|
||||||
|
</root>
|
||||||
|
</springProfile>
|
||||||
|
</configuration>
|
||||||
Reference in New Issue
Block a user