diff --git a/forgeboot-trace/build.gradle.kts b/forgeboot-trace/build.gradle.kts index f483163..0c9f28a 100644 --- a/forgeboot-trace/build.gradle.kts +++ b/forgeboot-trace/build.gradle.kts @@ -1,14 +1,6 @@ -dependencies { - implementation(project(Modules.Core.EXTENSION)) - implementation(project(Modules.Common.RESULT_API)) - - // Spring Cloud OpenFeign (Compile Only) - // https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign - compileOnly(libs.springCloudStarter.openfeign) - // Reactor Core (Compile Only) - // https://mvnrepository.com/artifact/io.projectreactor/reactor-core - compileOnly(libs.reactor.core) - - compileOnly(libs.springBootStarter.web) - compileOnly(libs.springBootStarter.webflux) +extra{ + setProperty(ProjectFlags.IS_ROOT_MODULE,true) +} +dependencies { + } diff --git a/forgeboot-common/.gitattributes b/forgeboot-trace/forgeboot-trace-api/.gitattributes similarity index 100% rename from forgeboot-common/.gitattributes rename to forgeboot-trace/forgeboot-trace-api/.gitattributes diff --git a/forgeboot-common/.gitignore b/forgeboot-trace/forgeboot-trace-api/.gitignore similarity index 100% rename from forgeboot-common/.gitignore rename to forgeboot-trace/forgeboot-trace-api/.gitignore diff --git a/forgeboot-common/forgeboot-common-result/forgeboot-common-result-api/build.gradle.kts b/forgeboot-trace/forgeboot-trace-api/build.gradle.kts similarity index 94% rename from forgeboot-common/forgeboot-common-result/forgeboot-common-result-api/build.gradle.kts rename to forgeboot-trace/forgeboot-trace-api/build.gradle.kts index 52ab83a..2e3ca6a 100644 --- a/forgeboot-common/forgeboot-common-result/forgeboot-common-result-api/build.gradle.kts +++ b/forgeboot-trace/forgeboot-trace-api/build.gradle.kts @@ -1,4 +1,3 @@ - dependencies { } diff --git a/forgeboot-common/forgeboot-common-result/forgeboot-common-result-api/src/main/java/com/gewuyou/forgeboot/common/result/api/RequestIdProvider.kt b/forgeboot-trace/forgeboot-trace-api/src/main/kotlin/com/gewuyou/forgeboot/trace/api/RequestIdProvider.kt similarity index 90% rename from forgeboot-common/forgeboot-common-result/forgeboot-common-result-api/src/main/java/com/gewuyou/forgeboot/common/result/api/RequestIdProvider.kt rename to forgeboot-trace/forgeboot-trace-api/src/main/kotlin/com/gewuyou/forgeboot/trace/api/RequestIdProvider.kt index c71b250..8ad316c 100644 --- a/forgeboot-common/forgeboot-common-result/forgeboot-common-result-api/src/main/java/com/gewuyou/forgeboot/common/result/api/RequestIdProvider.kt +++ b/forgeboot-trace/forgeboot-trace-api/src/main/kotlin/com/gewuyou/forgeboot/trace/api/RequestIdProvider.kt @@ -1,4 +1,4 @@ -package com.gewuyou.forgeboot.common.result.api +package com.gewuyou.forgeboot.trace.api /** * 请求ID提供商接口 * diff --git a/forgeboot-trace/forgeboot-trace-api/src/main/resources/application.properties b/forgeboot-trace/forgeboot-trace-api/src/main/resources/application.properties new file mode 100644 index 0000000..bbe3a4c --- /dev/null +++ b/forgeboot-trace/forgeboot-trace-api/src/main/resources/application.properties @@ -0,0 +1 @@ +spring.application.name=api diff --git a/forgeboot-common/forgeboot-common-result/.gitattributes b/forgeboot-trace/forgeboot-trace-autoconfigure/.gitattributes similarity index 100% rename from forgeboot-common/forgeboot-common-result/.gitattributes rename to forgeboot-trace/forgeboot-trace-autoconfigure/.gitattributes diff --git a/forgeboot-common/forgeboot-common-result/.gitignore b/forgeboot-trace/forgeboot-trace-autoconfigure/.gitignore similarity index 100% rename from forgeboot-common/forgeboot-common-result/.gitignore rename to forgeboot-trace/forgeboot-trace-autoconfigure/.gitignore diff --git a/forgeboot-trace/forgeboot-trace-autoconfigure/build.gradle.kts b/forgeboot-trace/forgeboot-trace-autoconfigure/build.gradle.kts new file mode 100644 index 0000000..76fa179 --- /dev/null +++ b/forgeboot-trace/forgeboot-trace-autoconfigure/build.gradle.kts @@ -0,0 +1,15 @@ + +dependencies { + compileOnly(platform(libs.springBootDependencies.bom)) + compileOnly(platform(libs.springCloudDependencies.bom)) + compileOnly(libs.springBootStarter.web) + compileOnly(libs.springBootStarter.webflux) + compileOnly(project(Modules.TRACE.API)) + compileOnly(project(Modules.TRACE.IMPL)) + // Spring Cloud OpenFeign (Compile Only) + // https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign + compileOnly(libs.springCloudStarter.openfeign) + // Reactor Core (Compile Only) + // https://mvnrepository.com/artifact/io.projectreactor/reactor-core + compileOnly(libs.reactor.core) +} diff --git a/forgeboot-trace/src/main/kotlin/com/gewuyou/forgeboot/trace/config/TraceAutoConfiguration.kt b/forgeboot-trace/forgeboot-trace-autoconfigure/src/main/kotlin/com/gewuyou/forgeboot/trace/autoconfig/TraceAutoConfiguration.kt similarity index 86% rename from forgeboot-trace/src/main/kotlin/com/gewuyou/forgeboot/trace/config/TraceAutoConfiguration.kt rename to forgeboot-trace/forgeboot-trace-autoconfigure/src/main/kotlin/com/gewuyou/forgeboot/trace/autoconfig/TraceAutoConfiguration.kt index f7f0d92..209c49e 100644 --- a/forgeboot-trace/src/main/kotlin/com/gewuyou/forgeboot/trace/config/TraceAutoConfiguration.kt +++ b/forgeboot-trace/forgeboot-trace-autoconfigure/src/main/kotlin/com/gewuyou/forgeboot/trace/autoconfig/TraceAutoConfiguration.kt @@ -1,13 +1,14 @@ -package com.gewuyou.forgeboot.trace.config +package com.gewuyou.forgeboot.trace.autoconfig -import com.gewuyou.forgeboot.common.result.api.RequestIdProvider -import com.gewuyou.forgeboot.trace.config.entities.TraceProperties -import com.gewuyou.forgeboot.trace.decorator.RequestIdTaskDecorator -import com.gewuyou.forgeboot.trace.filter.ReactiveRequestIdFilter -import com.gewuyou.forgeboot.trace.filter.RequestIdFilter -import com.gewuyou.forgeboot.trace.filter.WebClientRequestIdFilter -import com.gewuyou.forgeboot.trace.interceptor.FeignRequestIdInterceptor -import com.gewuyou.forgeboot.trace.provider.TraceRequestIdProvider + +import com.gewuyou.forgeboot.trace.api.RequestIdProvider +import com.gewuyou.forgeboot.trace.impl.config.TraceProperties +import com.gewuyou.forgeboot.trace.impl.decorator.RequestIdTaskDecorator +import com.gewuyou.forgeboot.trace.impl.filter.ReactiveRequestIdFilter +import com.gewuyou.forgeboot.trace.impl.filter.RequestIdFilter +import com.gewuyou.forgeboot.trace.impl.filter.WebClientRequestIdFilter +import com.gewuyou.forgeboot.trace.impl.interceptor.FeignRequestIdInterceptor +import com.gewuyou.forgeboot.trace.impl.provider.TraceRequestIdProvider import org.springframework.boot.autoconfigure.condition.ConditionalOnBean import org.springframework.boot.autoconfigure.condition.ConditionalOnClass import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean diff --git a/forgeboot-trace/forgeboot-trace-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/forgeboot-trace/forgeboot-trace-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..59dd799 --- /dev/null +++ b/forgeboot-trace/forgeboot-trace-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.gewuyou.forgeboot.trace.autoconfig.TraceAutoConfiguration \ No newline at end of file diff --git a/forgeboot-common/forgeboot-common-result/forgeboot-common-result-api/.gitattributes b/forgeboot-trace/forgeboot-trace-impl/.gitattributes similarity index 100% rename from forgeboot-common/forgeboot-common-result/forgeboot-common-result-api/.gitattributes rename to forgeboot-trace/forgeboot-trace-impl/.gitattributes diff --git a/forgeboot-common/forgeboot-common-result/forgeboot-common-result-impl/.gitignore b/forgeboot-trace/forgeboot-trace-impl/.gitignore similarity index 100% rename from forgeboot-common/forgeboot-common-result/forgeboot-common-result-impl/.gitignore rename to forgeboot-trace/forgeboot-trace-impl/.gitignore diff --git a/forgeboot-trace/forgeboot-trace-impl/build.gradle.kts b/forgeboot-trace/forgeboot-trace-impl/build.gradle.kts new file mode 100644 index 0000000..823ce44 --- /dev/null +++ b/forgeboot-trace/forgeboot-trace-impl/build.gradle.kts @@ -0,0 +1,12 @@ +dependencies { + implementation(project(Modules.Core.EXTENSION)) + compileOnly(project(Modules.TRACE.API)) + compileOnly(platform(libs.springBootDependencies.bom)) + compileOnly(platform(libs.springCloudDependencies.bom)) + compileOnly(libs.springBootStarter.webflux) + compileOnly(libs.springBootStarter.web) + // Spring Cloud OpenFeign (Compile Only) + // https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign + compileOnly(libs.springCloudStarter.openfeign) + kapt(libs.springBoot.configuration.processor) +} diff --git a/forgeboot-trace/forgeboot-trace-impl/src/main/kotlin/com/gewuyou/forgeboot/trace/impl/config/TraceProperties.kt b/forgeboot-trace/forgeboot-trace-impl/src/main/kotlin/com/gewuyou/forgeboot/trace/impl/config/TraceProperties.kt new file mode 100644 index 0000000..7b9ede7 --- /dev/null +++ b/forgeboot-trace/forgeboot-trace-impl/src/main/kotlin/com/gewuyou/forgeboot/trace/impl/config/TraceProperties.kt @@ -0,0 +1,30 @@ +package com.gewuyou.forgeboot.trace.impl.config + +import org.springframework.boot.context.properties.ConfigurationProperties + +/** + * 跟踪属性 + * 该类用于配置和管理请求跟踪相关的属性,通过这些属性可以对请求进行唯一的标识和跟踪 + * 主要功能包括定义请求ID的HTTP头名称、请求ID在MDC中的键名称,以及忽略跟踪的URL模式 + * + * @author gewuyou + * @since 2025-05-02 20:58:45 + */ +@ConfigurationProperties(prefix = "forgeboot.trace") +class TraceProperties { + /** + * HTTP请求头中用于传递请求ID的字段名称,默认为"X-Request-Id"。 + */ + var requestIdHeaderName: String = "X-Request-Id" + + /** + * MDC(Mapped Diagnostic Context)中用于存储请求ID的键名,默认为"requestId"。 + */ + var requestIdMdcKey: String = "requestId" + + /** + * 配置忽略日志记录的路径模式,通常用于静态资源文件, + * 默认忽略以.css、.js、.png等结尾的静态资源请求。 + */ + var ignorePatten = arrayOf(".*\\.(css|js|png|jpg|jpeg|gif|svg)") +} \ No newline at end of file diff --git a/forgeboot-trace/src/main/kotlin/com/gewuyou/forgeboot/trace/decorator/RequestIdTaskDecorator.kt b/forgeboot-trace/forgeboot-trace-impl/src/main/kotlin/com/gewuyou/forgeboot/trace/impl/decorator/RequestIdTaskDecorator.kt similarity index 85% rename from forgeboot-trace/src/main/kotlin/com/gewuyou/forgeboot/trace/decorator/RequestIdTaskDecorator.kt rename to forgeboot-trace/forgeboot-trace-impl/src/main/kotlin/com/gewuyou/forgeboot/trace/impl/decorator/RequestIdTaskDecorator.kt index c058999..1efc18e 100644 --- a/forgeboot-trace/src/main/kotlin/com/gewuyou/forgeboot/trace/decorator/RequestIdTaskDecorator.kt +++ b/forgeboot-trace/forgeboot-trace-impl/src/main/kotlin/com/gewuyou/forgeboot/trace/impl/decorator/RequestIdTaskDecorator.kt @@ -1,6 +1,6 @@ -package com.gewuyou.forgeboot.trace.decorator +package com.gewuyou.forgeboot.trace.impl.decorator -import com.gewuyou.forgeboot.trace.config.entities.TraceProperties +import com.gewuyou.forgeboot.trace.impl.config.TraceProperties import org.slf4j.MDC import org.springframework.core.task.TaskDecorator diff --git a/forgeboot-trace/src/main/kotlin/com/gewuyou/forgeboot/trace/extension/Request.kt b/forgeboot-trace/forgeboot-trace-impl/src/main/kotlin/com/gewuyou/forgeboot/trace/impl/extension/Request.kt similarity index 97% rename from forgeboot-trace/src/main/kotlin/com/gewuyou/forgeboot/trace/extension/Request.kt rename to forgeboot-trace/forgeboot-trace-impl/src/main/kotlin/com/gewuyou/forgeboot/trace/impl/extension/Request.kt index 25484a9..c66bf87 100644 --- a/forgeboot-trace/src/main/kotlin/com/gewuyou/forgeboot/trace/extension/Request.kt +++ b/forgeboot-trace/forgeboot-trace-impl/src/main/kotlin/com/gewuyou/forgeboot/trace/impl/extension/Request.kt @@ -1,4 +1,4 @@ -package com.gewuyou.forgeboot.trace.extension +package com.gewuyou.forgeboot.trace.impl.extension import jakarta.servlet.http.HttpServletRequest import org.springframework.http.HttpMethod diff --git a/forgeboot-trace/src/main/kotlin/com/gewuyou/forgeboot/trace/filter/ReactiveRequestIdFilter.kt b/forgeboot-trace/forgeboot-trace-impl/src/main/kotlin/com/gewuyou/forgeboot/trace/impl/filter/ReactiveRequestIdFilter.kt similarity index 86% rename from forgeboot-trace/src/main/kotlin/com/gewuyou/forgeboot/trace/filter/ReactiveRequestIdFilter.kt rename to forgeboot-trace/forgeboot-trace-impl/src/main/kotlin/com/gewuyou/forgeboot/trace/impl/filter/ReactiveRequestIdFilter.kt index 67a38e4..45188ed 100644 --- a/forgeboot-trace/src/main/kotlin/com/gewuyou/forgeboot/trace/filter/ReactiveRequestIdFilter.kt +++ b/forgeboot-trace/forgeboot-trace-impl/src/main/kotlin/com/gewuyou/forgeboot/trace/impl/filter/ReactiveRequestIdFilter.kt @@ -1,11 +1,12 @@ -package com.gewuyou.forgeboot.trace.filter +package com.gewuyou.forgeboot.trace.impl.filter import com.gewuyou.forgeboot.core.extension.log -import com.gewuyou.forgeboot.trace.config.entities.TraceProperties -import com.gewuyou.forgeboot.trace.extension.isSkipRequest -import com.gewuyou.forgeboot.trace.util.RequestIdUtil +import com.gewuyou.forgeboot.trace.impl.config.TraceProperties +import com.gewuyou.forgeboot.trace.impl.extension.isSkipRequest +import com.gewuyou.forgeboot.trace.impl.util.RequestIdUtil + import org.slf4j.MDC import org.springframework.web.server.ServerWebExchange import org.springframework.web.server.WebFilter @@ -36,10 +37,10 @@ class ReactiveRequestIdFilter( val requestIdMdcKey = traceProperties.requestIdMdcKey // 尝试从请求头中获取 requestId,如果存在则设置到 RequestIdUtil 中,否则生成一个新的 requestId request.headers[requestIdHeader]?.let { - it.firstOrNull()?.let(RequestIdUtil::setRequestId) ?: RequestIdUtil.generateRequestId() + it.firstOrNull()?.let(RequestIdUtil::requestId::set) ?: RequestIdUtil.generateRequestId() } ?: RequestIdUtil.generateRequestId() // 获取当前的 requestId - val currentRequestId = RequestIdUtil.getRequestId() + val currentRequestId = RequestIdUtil.requestId // 将 requestId 设置到日志中 MDC.put(requestIdMdcKey, currentRequestId) log.info("设置 Request id: $currentRequestId") @@ -53,7 +54,7 @@ class ReactiveRequestIdFilter( return chain.filter(mutatedExchange) // ✅ 让 Reactor 线程也能获取 requestId // 将 requestId 写入 Reactor 的上下文中,以便在异步处理中也能访问 - .contextWrite { ctx -> ctx.put(requestIdMdcKey, currentRequestId) } + .contextWrite { ctx -> ctx.put(requestIdMdcKey, currentRequestId!!) } .doFinally { // 清理 MDC 中的 requestId,避免内存泄漏 MDC.remove(requestIdMdcKey) diff --git a/forgeboot-trace/src/main/kotlin/com/gewuyou/forgeboot/trace/filter/RequestIdFilter.kt b/forgeboot-trace/forgeboot-trace-impl/src/main/kotlin/com/gewuyou/forgeboot/trace/impl/filter/RequestIdFilter.kt similarity index 86% rename from forgeboot-trace/src/main/kotlin/com/gewuyou/forgeboot/trace/filter/RequestIdFilter.kt rename to forgeboot-trace/forgeboot-trace-impl/src/main/kotlin/com/gewuyou/forgeboot/trace/impl/filter/RequestIdFilter.kt index 4447e29..5d3e7d8 100644 --- a/forgeboot-trace/src/main/kotlin/com/gewuyou/forgeboot/trace/filter/RequestIdFilter.kt +++ b/forgeboot-trace/forgeboot-trace-impl/src/main/kotlin/com/gewuyou/forgeboot/trace/impl/filter/RequestIdFilter.kt @@ -1,10 +1,11 @@ -package com.gewuyou.forgeboot.trace.filter +package com.gewuyou.forgeboot.trace.impl.filter import com.gewuyou.forgeboot.core.extension.log -import com.gewuyou.forgeboot.trace.config.entities.TraceProperties -import com.gewuyou.forgeboot.trace.extension.isSkipRequest -import com.gewuyou.forgeboot.trace.util.RequestIdUtil +import com.gewuyou.forgeboot.trace.impl.config.TraceProperties +import com.gewuyou.forgeboot.trace.impl.extension.isSkipRequest +import com.gewuyou.forgeboot.trace.impl.util.RequestIdUtil + import jakarta.servlet.FilterChain import jakarta.servlet.http.HttpServletRequest import jakarta.servlet.http.HttpServletResponse @@ -39,13 +40,13 @@ class RequestIdFilter( try { // 尝试从请求头中获取 requestId request.getHeader(requestIdHeader)?.also( - RequestIdUtil::setRequestId + RequestIdUtil::requestId::set ) ?: run { // 如果没有,则生成新的 requestId RequestIdUtil.generateRequestId() } // 获取 requestId - val requestId = RequestIdUtil.getRequestId() + val requestId = RequestIdUtil.requestId // 将requestId 设置到日志中 MDC.put(requestIdMdcKey, requestId) log.info("设置 Request id: $requestId") diff --git a/forgeboot-trace/src/main/kotlin/com/gewuyou/forgeboot/trace/filter/WebClientRequestIdFilter.kt b/forgeboot-trace/forgeboot-trace-impl/src/main/kotlin/com/gewuyou/forgeboot/trace/impl/filter/WebClientRequestIdFilter.kt similarity index 85% rename from forgeboot-trace/src/main/kotlin/com/gewuyou/forgeboot/trace/filter/WebClientRequestIdFilter.kt rename to forgeboot-trace/forgeboot-trace-impl/src/main/kotlin/com/gewuyou/forgeboot/trace/impl/filter/WebClientRequestIdFilter.kt index 76656c7..39ed629 100644 --- a/forgeboot-trace/src/main/kotlin/com/gewuyou/forgeboot/trace/filter/WebClientRequestIdFilter.kt +++ b/forgeboot-trace/forgeboot-trace-impl/src/main/kotlin/com/gewuyou/forgeboot/trace/impl/filter/WebClientRequestIdFilter.kt @@ -1,9 +1,10 @@ -package com.gewuyou.forgeboot.trace.filter +package com.gewuyou.forgeboot.trace.impl.filter import com.gewuyou.forgeboot.core.extension.log -import com.gewuyou.forgeboot.trace.config.entities.TraceProperties -import com.gewuyou.forgeboot.trace.extension.isSkipRequest -import com.gewuyou.forgeboot.trace.util.RequestIdUtil +import com.gewuyou.forgeboot.trace.impl.config.TraceProperties +import com.gewuyou.forgeboot.trace.impl.extension.isSkipRequest +import com.gewuyou.forgeboot.trace.impl.util.RequestIdUtil + import org.slf4j.MDC import org.springframework.web.reactive.function.client.ClientRequest import org.springframework.web.reactive.function.client.ClientResponse @@ -35,10 +36,10 @@ class WebClientRequestIdFilter( val requestIdMdcKey = traceProperties.requestIdMdcKey // 尝试从请求头中获取 requestId,如果存在则设置到 RequestIdUtil 中,否则生成一个新的 requestId request.headers()[requestIdHeader]?.let { - it.firstOrNull()?.let(RequestIdUtil::setRequestId) ?: RequestIdUtil.generateRequestId() + it.firstOrNull()?.let(RequestIdUtil::requestId::set) ?: RequestIdUtil.generateRequestId() } ?: RequestIdUtil.generateRequestId() // 获取当前的 requestId - val currentRequestId = RequestIdUtil.getRequestId() + val currentRequestId = RequestIdUtil.requestId // 将 requestId 设置到日志中 MDC.put(requestIdMdcKey, currentRequestId) log.info("设置 Request id: $currentRequestId") diff --git a/forgeboot-trace/src/main/kotlin/com/gewuyou/forgeboot/trace/interceptor/FeignRequestIdInterceptor.kt b/forgeboot-trace/forgeboot-trace-impl/src/main/kotlin/com/gewuyou/forgeboot/trace/impl/interceptor/FeignRequestIdInterceptor.kt similarity index 76% rename from forgeboot-trace/src/main/kotlin/com/gewuyou/forgeboot/trace/interceptor/FeignRequestIdInterceptor.kt rename to forgeboot-trace/forgeboot-trace-impl/src/main/kotlin/com/gewuyou/forgeboot/trace/impl/interceptor/FeignRequestIdInterceptor.kt index 20a62f9..e5b0676 100644 --- a/forgeboot-trace/src/main/kotlin/com/gewuyou/forgeboot/trace/interceptor/FeignRequestIdInterceptor.kt +++ b/forgeboot-trace/forgeboot-trace-impl/src/main/kotlin/com/gewuyou/forgeboot/trace/impl/interceptor/FeignRequestIdInterceptor.kt @@ -1,10 +1,10 @@ -package com.gewuyou.forgeboot.trace.interceptor +package com.gewuyou.forgeboot.trace.impl.interceptor import com.gewuyou.forgeboot.core.extension.log -import com.gewuyou.forgeboot.trace.config.entities.TraceProperties -import com.gewuyou.forgeboot.trace.util.RequestIdUtil +import com.gewuyou.forgeboot.trace.impl.config.TraceProperties +import com.gewuyou.forgeboot.trace.impl.util.RequestIdUtil import feign.RequestInterceptor import feign.RequestTemplate @@ -19,7 +19,7 @@ class FeignRequestIdInterceptor( ) : RequestInterceptor { override fun apply(template: RequestTemplate) { // 尝试获取当前请求的请求id - val requestId = RequestIdUtil.getRequestId() + val requestId = RequestIdUtil.requestId requestId?.let { // 如果请求id存在,则添加到请求头中 template.header(traceProperties.requestIdHeaderName, requestId) diff --git a/forgeboot-trace/src/main/kotlin/com/gewuyou/forgeboot/trace/provider/TraceRequestIdProvider.kt b/forgeboot-trace/forgeboot-trace-impl/src/main/kotlin/com/gewuyou/forgeboot/trace/impl/provider/TraceRequestIdProvider.kt similarity index 57% rename from forgeboot-trace/src/main/kotlin/com/gewuyou/forgeboot/trace/provider/TraceRequestIdProvider.kt rename to forgeboot-trace/forgeboot-trace-impl/src/main/kotlin/com/gewuyou/forgeboot/trace/impl/provider/TraceRequestIdProvider.kt index 64902f9..cd0347a 100644 --- a/forgeboot-trace/src/main/kotlin/com/gewuyou/forgeboot/trace/provider/TraceRequestIdProvider.kt +++ b/forgeboot-trace/forgeboot-trace-impl/src/main/kotlin/com/gewuyou/forgeboot/trace/impl/provider/TraceRequestIdProvider.kt @@ -1,7 +1,8 @@ -package com.gewuyou.forgeboot.trace.provider +package com.gewuyou.forgeboot.trace.impl.provider + +import com.gewuyou.forgeboot.trace.api.RequestIdProvider +import com.gewuyou.forgeboot.trace.impl.util.RequestIdUtil -import com.gewuyou.forgeboot.common.result.api.RequestIdProvider -import com.gewuyou.forgeboot.trace.util.RequestIdUtil /** *跟踪请求ID提供商 @@ -18,6 +19,6 @@ class TraceRequestIdProvider: RequestIdProvider { * @return 请求ID的字符串表示 */ override fun getRequestId(): String { - return RequestIdUtil.getRequestId() + return RequestIdUtil.requestId?:throw RuntimeException("requestId is null") } } \ No newline at end of file diff --git a/forgeboot-trace/forgeboot-trace-impl/src/main/kotlin/com/gewuyou/forgeboot/trace/impl/util/RequestIdUtil.kt b/forgeboot-trace/forgeboot-trace-impl/src/main/kotlin/com/gewuyou/forgeboot/trace/impl/util/RequestIdUtil.kt new file mode 100644 index 0000000..0b3894f --- /dev/null +++ b/forgeboot-trace/forgeboot-trace-impl/src/main/kotlin/com/gewuyou/forgeboot/trace/impl/util/RequestIdUtil.kt @@ -0,0 +1,26 @@ +package com.gewuyou.forgeboot.trace.impl.util + +import java.util.* + +/** + * 请求 ID Util + * 这个类需配合 RequestIdFilter 使用,用于生成请求 ID,并将其绑定到线程变量中,供后续可能需要的地方使用。 + * @author gewuyou + * @since 2025-01-02 14:27:45 + */ + object RequestIdUtil { + private val REQUEST_ID_HOLDER = ThreadLocal() + fun generateRequestId() { + REQUEST_ID_HOLDER.set(UUID.randomUUID().toString()) + } + + var requestId: String? + get() = REQUEST_ID_HOLDER.get() + set(uuid) { + REQUEST_ID_HOLDER.set(uuid) + } + + fun removeRequestId() { + REQUEST_ID_HOLDER.remove() + } +} diff --git a/forgeboot-trace/forgeboot-trace-impl/src/main/resources/application.properties b/forgeboot-trace/forgeboot-trace-impl/src/main/resources/application.properties new file mode 100644 index 0000000..6e466b5 --- /dev/null +++ b/forgeboot-trace/forgeboot-trace-impl/src/main/resources/application.properties @@ -0,0 +1 @@ +spring.application.name=impl diff --git a/forgeboot-trace/src/main/java/com/gewuyou/forgeboot/trace/config/entities/TraceProperties.java b/forgeboot-trace/src/main/java/com/gewuyou/forgeboot/trace/config/entities/TraceProperties.java deleted file mode 100644 index fa2520d..0000000 --- a/forgeboot-trace/src/main/java/com/gewuyou/forgeboot/trace/config/entities/TraceProperties.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.gewuyou.forgeboot.trace.config.entities; - -import org.springframework.boot.context.properties.ConfigurationProperties; - -/** - * 跟踪属性 - * 该类用于配置和管理请求跟踪相关的属性,通过这些属性可以对请求进行唯一的标识和跟踪 - * 主要功能包括定义请求ID的HTTP头名称、请求ID在MDC中的键名称,以及忽略跟踪的URL模式 - * - * @author gewuyou - * @since 2025-05-02 20:58:45 - */ -@ConfigurationProperties(prefix = "forgeboot.trace") -public class TraceProperties { - /** - * HTTP请求头中用于传递请求ID的字段名称,默认为"X-Request-Id"。 - */ - private String requestIdHeaderName = "X-Request-Id"; - - /** - * MDC(Mapped Diagnostic Context)中用于存储请求ID的键名,默认为"requestId"。 - */ - private String requestIdMdcKey = "requestId"; - - /** - * 配置忽略日志记录的路径模式,通常用于静态资源文件, - * 默认忽略以.css、.js、.png等结尾的静态资源请求。 - */ - private String[] ignorePatten = new String[]{".*\\.(css|js|png|jpg|jpeg|gif|svg)"}; - - public String getRequestIdHeaderName() { - return requestIdHeaderName; - } - - public String[] getIgnorePatten() { - return ignorePatten; - } - - public void setIgnorePatten(String[] ignorePatten) { - this.ignorePatten = ignorePatten; - } - - public void setRequestIdHeaderName(String requestIdHeaderName) { - this.requestIdHeaderName = requestIdHeaderName; - } - - public String getRequestIdMdcKey() { - return requestIdMdcKey; - } - - public void setRequestIdMdcKey(String requestIdMdcKey) { - this.requestIdMdcKey = requestIdMdcKey; - } -} diff --git a/forgeboot-trace/src/main/java/com/gewuyou/forgeboot/trace/util/RequestIdUtil.java b/forgeboot-trace/src/main/java/com/gewuyou/forgeboot/trace/util/RequestIdUtil.java deleted file mode 100644 index 30fb171..0000000 --- a/forgeboot-trace/src/main/java/com/gewuyou/forgeboot/trace/util/RequestIdUtil.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.gewuyou.forgeboot.trace.util; - -import java.util.UUID; - -/** - * 请求 ID Util - * 这个类需配合 RequestIdFilter 使用,用于生成请求 ID,并将其绑定到线程变量中,供后续可能需要的地方使用。 - * @author gewuyou - * @since 2025-01-02 14:27:45 - */ -public class RequestIdUtil { - private static final ThreadLocal REQUEST_ID_HOLDER = new ThreadLocal<>(); - private RequestIdUtil() { - } - public static void generateRequestId() { - REQUEST_ID_HOLDER.set(UUID.randomUUID().toString()); - } - - public static String getRequestId() { - return REQUEST_ID_HOLDER.get(); - } - - public static void setRequestId(String uuid) { - REQUEST_ID_HOLDER.set(uuid); - } - - public static void removeRequestId() { - REQUEST_ID_HOLDER.remove(); - } -} diff --git a/forgeboot-trace/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/forgeboot-trace/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index 84e7809..0000000 --- a/forgeboot-trace/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1 +0,0 @@ -com.gewuyou.forgeboot.trace.config.TraceAutoConfiguration \ No newline at end of file