Commit e351cdf7850b2af4de5927e0ba2514451457e701
1 parent
81b1f375
完善 skywalking 组件的集成
Showing
13 changed files
with
159 additions
and
130 deletions
pom.xml
| @@ -196,6 +196,11 @@ | @@ -196,6 +196,11 @@ | ||
| 196 | <artifactId>apm-toolkit-logback-1.x</artifactId> | 196 | <artifactId>apm-toolkit-logback-1.x</artifactId> |
| 197 | <version>${skywalking.version}</version> | 197 | <version>${skywalking.version}</version> |
| 198 | </dependency> | 198 | </dependency> |
| 199 | + <dependency> | ||
| 200 | + <groupId>org.apache.skywalking</groupId> | ||
| 201 | + <artifactId>apm-toolkit-opentracing</artifactId> | ||
| 202 | + <version>${skywalking.version}</version> | ||
| 203 | + </dependency> | ||
| 199 | 204 | ||
| 200 | <dependency> | 205 | <dependency> |
| 201 | <groupId>de.codecentric</groupId> | 206 | <groupId>de.codecentric</groupId> |
src/main/java/cn/iocoder/dashboard/framework/tracer/config/TracerAutoConfiguration.java
| 1 | package cn.iocoder.dashboard.framework.tracer.config; | 1 | package cn.iocoder.dashboard.framework.tracer.config; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.dashboard.framework.tracer.core.annotation.BizTracingAop; | 3 | +import cn.iocoder.dashboard.framework.tracer.core.aop.BizTraceAspect; |
| 4 | +import cn.iocoder.dashboard.framework.tracer.core.filter.TraceFilter; | ||
| 5 | +import cn.iocoder.dashboard.framework.web.core.enums.FilterOrderEnum; | ||
| 6 | +import io.opentracing.Tracer; | ||
| 7 | +import org.apache.skywalking.apm.toolkit.opentracing.SkywalkingTracer; | ||
| 4 | import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; | 8 | import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; |
| 5 | import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; | 9 | import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; |
| 6 | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; | 10 | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; |
| 7 | import org.springframework.boot.context.properties.EnableConfigurationProperties; | 11 | import org.springframework.boot.context.properties.EnableConfigurationProperties; |
| 12 | +import org.springframework.boot.web.servlet.FilterRegistrationBean; | ||
| 8 | import org.springframework.context.annotation.Bean; | 13 | import org.springframework.context.annotation.Bean; |
| 9 | import org.springframework.context.annotation.Configuration; | 14 | import org.springframework.context.annotation.Configuration; |
| 10 | 15 | ||
| @@ -14,21 +19,38 @@ import org.springframework.context.annotation.Configuration; | @@ -14,21 +19,38 @@ import org.springframework.context.annotation.Configuration; | ||
| 14 | * @author mashu | 19 | * @author mashu |
| 15 | */ | 20 | */ |
| 16 | @Configuration | 21 | @Configuration |
| 17 | -@ConditionalOnClass({BizTracingAop.class}) | ||
| 18 | -@EnableConfigurationProperties(BizTracerProperties.class) | 22 | +@ConditionalOnClass({BizTraceAspect.class}) |
| 23 | +@EnableConfigurationProperties(TracerProperties.class) | ||
| 19 | @ConditionalOnProperty(prefix = "yudao.tracer", value = "enable", matchIfMissing = true) | 24 | @ConditionalOnProperty(prefix = "yudao.tracer", value = "enable", matchIfMissing = true) |
| 20 | public class TracerAutoConfiguration { | 25 | public class TracerAutoConfiguration { |
| 21 | 26 | ||
| 22 | @Bean | 27 | @Bean |
| 23 | @ConditionalOnMissingBean | 28 | @ConditionalOnMissingBean |
| 24 | - public BizTracerProperties bizTracerProperties() { | ||
| 25 | - return new BizTracerProperties(); | 29 | + public TracerProperties bizTracerProperties() { |
| 30 | + return new TracerProperties(); | ||
| 26 | } | 31 | } |
| 27 | 32 | ||
| 28 | @Bean | 33 | @Bean |
| 29 | @ConditionalOnMissingBean | 34 | @ConditionalOnMissingBean |
| 30 | - public BizTracingAop bizTracingAop() { | ||
| 31 | - return new BizTracingAop(); | 35 | + public BizTraceAspect bizTracingAop() { |
| 36 | + return new BizTraceAspect(); | ||
| 37 | + } | ||
| 38 | + | ||
| 39 | + @Bean | ||
| 40 | + @ConditionalOnMissingBean | ||
| 41 | + public Tracer tracer() { | ||
| 42 | + return new SkywalkingTracer(); | ||
| 43 | + } | ||
| 44 | + | ||
| 45 | + /** | ||
| 46 | + * 创建 TraceFilter 过滤器,响应 header 设置 traceId | ||
| 47 | + */ | ||
| 48 | + @Bean | ||
| 49 | + public FilterRegistrationBean<TraceFilter> traceFilter() { | ||
| 50 | + FilterRegistrationBean<TraceFilter> registrationBean = new FilterRegistrationBean<>(); | ||
| 51 | + registrationBean.setFilter(new TraceFilter()); | ||
| 52 | + registrationBean.setOrder(FilterOrderEnum.TRACE_FILTER); | ||
| 53 | + return registrationBean; | ||
| 32 | } | 54 | } |
| 33 | 55 | ||
| 34 | } | 56 | } |
src/main/java/cn/iocoder/dashboard/framework/tracer/config/BizTracerProperties.java renamed to src/main/java/cn/iocoder/dashboard/framework/tracer/config/TracerProperties.java
| @@ -10,5 +10,5 @@ import org.springframework.boot.context.properties.ConfigurationProperties; | @@ -10,5 +10,5 @@ import org.springframework.boot.context.properties.ConfigurationProperties; | ||
| 10 | */ | 10 | */ |
| 11 | @ConfigurationProperties("yudao.tracer") | 11 | @ConfigurationProperties("yudao.tracer") |
| 12 | @Data | 12 | @Data |
| 13 | -public class BizTracerProperties { | 13 | +public class TracerProperties { |
| 14 | } | 14 | } |
src/main/java/cn/iocoder/dashboard/framework/tracer/core/annotation/BizTracing.java renamed to src/main/java/cn/iocoder/dashboard/framework/tracer/core/annotation/BizTrace.java
| @@ -10,7 +10,7 @@ import java.lang.annotation.*; | @@ -10,7 +10,7 @@ import java.lang.annotation.*; | ||
| 10 | @Target({ElementType.METHOD}) | 10 | @Target({ElementType.METHOD}) |
| 11 | @Retention(RetentionPolicy.RUNTIME) | 11 | @Retention(RetentionPolicy.RUNTIME) |
| 12 | @Inherited | 12 | @Inherited |
| 13 | -public @interface BizTracing { | 13 | +public @interface BizTrace { |
| 14 | 14 | ||
| 15 | /** | 15 | /** |
| 16 | * 业务编号 tag 名 | 16 | * 业务编号 tag 名 |
| @@ -22,6 +22,11 @@ public @interface BizTracing { | @@ -22,6 +22,11 @@ public @interface BizTracing { | ||
| 22 | String TYPE_TAG = "biz.type"; | 22 | String TYPE_TAG = "biz.type"; |
| 23 | 23 | ||
| 24 | /** | 24 | /** |
| 25 | + * @return 操作名 | ||
| 26 | + */ | ||
| 27 | + String operationName() default ""; | ||
| 28 | + | ||
| 29 | + /** | ||
| 25 | * @return 业务编号 | 30 | * @return 业务编号 |
| 26 | */ | 31 | */ |
| 27 | String id(); | 32 | String id(); |
src/main/java/cn/iocoder/dashboard/framework/tracer/core/annotation/BizTracingAop.java deleted
| 1 | -package cn.iocoder.dashboard.framework.tracer.core.annotation; | ||
| 2 | - | ||
| 3 | -import cn.hutool.core.util.StrUtil; | ||
| 4 | -import cn.iocoder.dashboard.util.sping.SpElUtil; | ||
| 5 | -import lombok.extern.slf4j.Slf4j; | ||
| 6 | -import org.apache.skywalking.apm.toolkit.trace.ActiveSpan; | ||
| 7 | -import org.aspectj.lang.ProceedingJoinPoint; | ||
| 8 | -import org.aspectj.lang.annotation.Around; | ||
| 9 | -import org.aspectj.lang.annotation.Aspect; | ||
| 10 | - | ||
| 11 | -/** | ||
| 12 | - * 业务链路AOP切面 | ||
| 13 | - * | ||
| 14 | - * @author mashu | ||
| 15 | - */ | ||
| 16 | -@Aspect | ||
| 17 | -@Slf4j | ||
| 18 | -public class BizTracingAop { | ||
| 19 | - | ||
| 20 | - @Around(value = "@annotation(bizTracing)") | ||
| 21 | - public void tagBizInfo(ProceedingJoinPoint joinPoint, BizTracing bizTracing) { | ||
| 22 | - String bizId = (String) SpElUtil.analysisSpEl(bizTracing.id(), joinPoint); | ||
| 23 | - String bizType = (String) SpElUtil.analysisSpEl(bizTracing.type(), joinPoint); | ||
| 24 | - if (StrUtil.isBlankIfStr(bizId)) { | ||
| 25 | - log.error("empty biz: bizId[{}], bizType[{}].", bizId, bizType); | ||
| 26 | - return; | ||
| 27 | - } | ||
| 28 | - log.info("accept biz: bizId[{}], bizType[{}].", bizId, bizType); | ||
| 29 | - ActiveSpan.tag(BizTracing.ID_TAG, bizId); | ||
| 30 | - ActiveSpan.tag(BizTracing.TYPE_TAG, bizType); | ||
| 31 | - } | ||
| 32 | -} |
src/main/java/cn/iocoder/dashboard/framework/tracer/core/aop/BizTraceAspect.java
0 → 100644
| 1 | +package cn.iocoder.dashboard.framework.tracer.core.aop; | ||
| 2 | + | ||
| 3 | +import cn.hutool.core.util.StrUtil; | ||
| 4 | +import cn.iocoder.dashboard.framework.tracer.core.annotation.BizTrace; | ||
| 5 | +import cn.iocoder.dashboard.util.sping.SpElUtil; | ||
| 6 | +import io.opentracing.Span; | ||
| 7 | +import io.opentracing.Tracer; | ||
| 8 | +import lombok.extern.slf4j.Slf4j; | ||
| 9 | +import org.aspectj.lang.ProceedingJoinPoint; | ||
| 10 | +import org.aspectj.lang.annotation.Around; | ||
| 11 | +import org.aspectj.lang.annotation.Aspect; | ||
| 12 | + | ||
| 13 | +import javax.annotation.Resource; | ||
| 14 | + | ||
| 15 | +/** | ||
| 16 | + * {@link BizTrace} 切面,记录业务链路 | ||
| 17 | + * | ||
| 18 | + * @author mashu | ||
| 19 | + */ | ||
| 20 | +@Aspect | ||
| 21 | +@Slf4j | ||
| 22 | +public class BizTraceAspect { | ||
| 23 | + | ||
| 24 | + private static final String BIZ_OPERATION_NAME_PREFIX = "Biz/"; | ||
| 25 | + | ||
| 26 | + @Resource | ||
| 27 | + private Tracer tracer; | ||
| 28 | + | ||
| 29 | + @Around(value = "@annotation(trace)") | ||
| 30 | + public Object around(ProceedingJoinPoint joinPoint, BizTrace trace) throws Throwable { | ||
| 31 | + // 创建 span | ||
| 32 | + String operationName = getOperationName(joinPoint, trace); | ||
| 33 | + Span span = tracer.buildSpan(operationName).startManual(); | ||
| 34 | + try { | ||
| 35 | + // 执行原有方法 | ||
| 36 | + return joinPoint.proceed(); | ||
| 37 | + } finally { | ||
| 38 | + // 设置 Span 的 biz 属性 | ||
| 39 | + setBizTag(span, joinPoint, trace); | ||
| 40 | + // 完成 Span | ||
| 41 | + span.finish(); | ||
| 42 | + } | ||
| 43 | + } | ||
| 44 | + | ||
| 45 | + private String getOperationName(ProceedingJoinPoint joinPoint, BizTrace trace) { | ||
| 46 | + // 自定义操作名 | ||
| 47 | + if (StrUtil.isNotEmpty(trace.operationName())) { | ||
| 48 | + return BIZ_OPERATION_NAME_PREFIX + trace.operationName(); | ||
| 49 | + } | ||
| 50 | + // 默认操作名,使用方法名 | ||
| 51 | + return BIZ_OPERATION_NAME_PREFIX | ||
| 52 | + + joinPoint.getSignature().getDeclaringType().getSimpleName() | ||
| 53 | + + "/" + joinPoint.getSignature().getName(); | ||
| 54 | + } | ||
| 55 | + | ||
| 56 | + private void setBizTag(Span span, ProceedingJoinPoint joinPoint, BizTrace trace) { | ||
| 57 | + try { | ||
| 58 | + span.setTag(BizTrace.TYPE_TAG, StrUtil.toString(SpElUtil.analysisSpEl(trace.type(), joinPoint))); | ||
| 59 | + span.setTag(BizTrace.ID_TAG, StrUtil.toString(SpElUtil.analysisSpEl(trace.id(), joinPoint))); | ||
| 60 | + } catch (Exception ex) { | ||
| 61 | + log.error("[around][解析 bizType 与 bizId 发生异常]", ex); | ||
| 62 | + } | ||
| 63 | + } | ||
| 64 | + | ||
| 65 | +} |
src/main/java/cn/iocoder/dashboard/framework/tracer/core/filter/TraceFilter.java
0 → 100644
| 1 | +package cn.iocoder.dashboard.framework.tracer.core.filter; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.dashboard.framework.tracer.core.util.TracerUtils; | ||
| 4 | +import org.springframework.web.filter.OncePerRequestFilter; | ||
| 5 | + | ||
| 6 | +import javax.servlet.FilterChain; | ||
| 7 | +import javax.servlet.ServletException; | ||
| 8 | +import javax.servlet.http.HttpServletRequest; | ||
| 9 | +import javax.servlet.http.HttpServletResponse; | ||
| 10 | +import java.io.IOException; | ||
| 11 | + | ||
| 12 | +/** | ||
| 13 | + * Trace 过滤器,打印 traceId 到 header 中返回 | ||
| 14 | + * | ||
| 15 | + * @author 芋道源码 | ||
| 16 | + */ | ||
| 17 | +public class TraceFilter extends OncePerRequestFilter { | ||
| 18 | + | ||
| 19 | + /** | ||
| 20 | + * Header 名 - 链路追踪编号 | ||
| 21 | + */ | ||
| 22 | + private static final String HEADER_NAME_TRACE_ID = "trace-id"; | ||
| 23 | + | ||
| 24 | + @Override | ||
| 25 | + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) | ||
| 26 | + throws IOException, ServletException { | ||
| 27 | + // 设置响应 traceId | ||
| 28 | + response.addHeader(HEADER_NAME_TRACE_ID, TracerUtils.getTraceId()); | ||
| 29 | + // 继续过滤 | ||
| 30 | + chain.doFilter(request, response); | ||
| 31 | + } | ||
| 32 | + | ||
| 33 | +} |
src/main/java/cn/iocoder/dashboard/framework/tracer/core/util/TracerUtils.java
| @@ -2,8 +2,6 @@ package cn.iocoder.dashboard.framework.tracer.core.util; | @@ -2,8 +2,6 @@ package cn.iocoder.dashboard.framework.tracer.core.util; | ||
| 2 | 2 | ||
| 3 | import org.apache.skywalking.apm.toolkit.trace.TraceContext; | 3 | import org.apache.skywalking.apm.toolkit.trace.TraceContext; |
| 4 | 4 | ||
| 5 | -import java.util.UUID; | ||
| 6 | - | ||
| 7 | /** | 5 | /** |
| 8 | * 链路追踪工具类 | 6 | * 链路追踪工具类 |
| 9 | * | 7 | * |
| @@ -18,10 +16,8 @@ public class TracerUtils { | @@ -18,10 +16,8 @@ public class TracerUtils { | ||
| 18 | } | 16 | } |
| 19 | 17 | ||
| 20 | /** | 18 | /** |
| 21 | - * 获得链路追踪编号 | ||
| 22 | - * <p> | ||
| 23 | - * 直接返回skywalking 的TraceId 如果不存在的话为空字符串"" | ||
| 24 | - * <p> | 19 | + * 获得链路追踪编号,直接返回 SkyWalking 的 TraceId。 |
| 20 | + * 如果不存在的话为空字符串!!! | ||
| 25 | * | 21 | * |
| 26 | * @return 链路追踪编号 | 22 | * @return 链路追踪编号 |
| 27 | */ | 23 | */ |
src/main/java/cn/iocoder/dashboard/framework/tracer/skywalking/LocalLogbackPatternConverter.java deleted
| 1 | -/* | ||
| 2 | - * Licensed to the Apache Software Foundation (ASF) under one or more | ||
| 3 | - * contributor license agreements. See the NOTICE file distributed with | ||
| 4 | - * this work for additional information regarding copyright ownership. | ||
| 5 | - * The ASF licenses this file to You under the Apache License, Version 2.0 | ||
| 6 | - * (the "License"); you may not use this file except in compliance with | ||
| 7 | - * the License. You may obtain a copy of the License at | ||
| 8 | - * | ||
| 9 | - * http://www.apache.org/licenses/LICENSE-2.0 | ||
| 10 | - * | ||
| 11 | - * Unless required by applicable law or agreed to in writing, software | ||
| 12 | - * distributed under the License is distributed on an "AS IS" BASIS, | ||
| 13 | - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| 14 | - * See the License for the specific language governing permissions and | ||
| 15 | - * limitations under the License. | ||
| 16 | - * | ||
| 17 | - */ | ||
| 18 | - | ||
| 19 | - | ||
| 20 | -package cn.iocoder.dashboard.framework.tracer.skywalking; | ||
| 21 | - | ||
| 22 | -import ch.qos.logback.classic.pattern.ClassicConverter; | ||
| 23 | -import ch.qos.logback.classic.spi.ILoggingEvent; | ||
| 24 | -import cn.iocoder.dashboard.framework.tracer.core.util.TracerUtils; | ||
| 25 | - | ||
| 26 | -/** | ||
| 27 | - * Created by mashu on 2021/3/6. | ||
| 28 | - */ | ||
| 29 | -public class LocalLogbackPatternConverter extends ClassicConverter { | ||
| 30 | - /** | ||
| 31 | - * 作为默认的方式, 从{@link TracerUtils}中获取traceId, | ||
| 32 | - * 需要用这个去替代logback的Layout, | ||
| 33 | - * 同时避免了sky-walking agent生效的情况下仍然输出定值的问题. | ||
| 34 | - * | ||
| 35 | - * @param iLoggingEvent the event | ||
| 36 | - * @return the traceId: UUID, or the real traceId. | ||
| 37 | - */ | ||
| 38 | - @Override | ||
| 39 | - public String convert(ILoggingEvent iLoggingEvent) { | ||
| 40 | - return TracerUtils.getTraceId(); | ||
| 41 | - } | ||
| 42 | -} |
src/main/java/cn/iocoder/dashboard/framework/tracer/skywalking/TraceIdPatternLogbackLayout.java deleted
| 1 | -/* | ||
| 2 | - * Licensed to the Apache Software Foundation (ASF) under one or more | ||
| 3 | - * contributor license agreements. See the NOTICE file distributed with | ||
| 4 | - * this work for additional information regarding copyright ownership. | ||
| 5 | - * The ASF licenses this file to You under the Apache License, Version 2.0 | ||
| 6 | - * (the "License"); you may not use this file except in compliance with | ||
| 7 | - * the License. You may obtain a copy of the License at | ||
| 8 | - * | ||
| 9 | - * http://www.apache.org/licenses/LICENSE-2.0 | ||
| 10 | - * | ||
| 11 | - * Unless required by applicable law or agreed to in writing, software | ||
| 12 | - * distributed under the License is distributed on an "AS IS" BASIS, | ||
| 13 | - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| 14 | - * See the License for the specific language governing permissions and | ||
| 15 | - * limitations under the License. | ||
| 16 | - * | ||
| 17 | - */ | ||
| 18 | - | ||
| 19 | - | ||
| 20 | -package cn.iocoder.dashboard.framework.tracer.skywalking; | ||
| 21 | - | ||
| 22 | -import ch.qos.logback.classic.PatternLayout; | ||
| 23 | - | ||
| 24 | -/** | ||
| 25 | - * Based on the logback-component convert register mechanism, | ||
| 26 | - * register {@link LocalLogbackPatternConverter} as a new convert, match to "tid". | ||
| 27 | - * You can use "%tid" in logback config file, "Pattern" section. | ||
| 28 | - * If sky-walking agent is not active mode, it will use UUID as tid. | ||
| 29 | - * <p> | ||
| 30 | - * logback 的转换组件,为tid 添加占位符的转换器 | ||
| 31 | - * Created by mashu on 2021/3/6. | ||
| 32 | - */ | ||
| 33 | -public class TraceIdPatternLogbackLayout extends PatternLayout { | ||
| 34 | - static { | ||
| 35 | - defaultConverterMap.put("tid", LocalLogbackPatternConverter.class.getName()); | ||
| 36 | - } | ||
| 37 | -} |
src/main/java/cn/iocoder/dashboard/framework/web/core/enums/FilterOrderEnum.java
| @@ -9,6 +9,7 @@ public interface FilterOrderEnum { | @@ -9,6 +9,7 @@ public interface FilterOrderEnum { | ||
| 9 | 9 | ||
| 10 | int CORS_FILTER = Integer.MIN_VALUE; | 10 | int CORS_FILTER = Integer.MIN_VALUE; |
| 11 | 11 | ||
| 12 | + int TRACE_FILTER = CORS_FILTER + 1; | ||
| 12 | 13 | ||
| 13 | int REQUEST_BODY_CACHE_FILTER = Integer.MIN_VALUE + 500; | 14 | int REQUEST_BODY_CACHE_FILTER = Integer.MIN_VALUE + 500; |
| 14 | 15 |
src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/SysAuthController.java
| @@ -3,6 +3,7 @@ package cn.iocoder.dashboard.modules.system.controller.auth; | @@ -3,6 +3,7 @@ package cn.iocoder.dashboard.modules.system.controller.auth; | ||
| 3 | import cn.iocoder.dashboard.common.enums.CommonStatusEnum; | 3 | import cn.iocoder.dashboard.common.enums.CommonStatusEnum; |
| 4 | import cn.iocoder.dashboard.common.pojo.CommonResult; | 4 | import cn.iocoder.dashboard.common.pojo.CommonResult; |
| 5 | import cn.iocoder.dashboard.framework.logger.operatelog.core.annotations.OperateLog; | 5 | import cn.iocoder.dashboard.framework.logger.operatelog.core.annotations.OperateLog; |
| 6 | +import cn.iocoder.dashboard.framework.tracer.core.annotation.BizTrace; | ||
| 6 | import cn.iocoder.dashboard.modules.system.controller.auth.vo.auth.SysAuthLoginReqVO; | 7 | import cn.iocoder.dashboard.modules.system.controller.auth.vo.auth.SysAuthLoginReqVO; |
| 7 | import cn.iocoder.dashboard.modules.system.controller.auth.vo.auth.SysAuthLoginRespVO; | 8 | import cn.iocoder.dashboard.modules.system.controller.auth.vo.auth.SysAuthLoginRespVO; |
| 8 | import cn.iocoder.dashboard.modules.system.controller.auth.vo.auth.SysAuthMenuRespVO; | 9 | import cn.iocoder.dashboard.modules.system.controller.auth.vo.auth.SysAuthMenuRespVO; |
| @@ -58,6 +59,7 @@ public class SysAuthController { | @@ -58,6 +59,7 @@ public class SysAuthController { | ||
| 58 | 59 | ||
| 59 | @GetMapping("/get-permission-info") | 60 | @GetMapping("/get-permission-info") |
| 60 | @ApiOperation("获取登陆用户的权限信息") | 61 | @ApiOperation("获取登陆用户的权限信息") |
| 62 | + @BizTrace(id = "1", type = "'user'") | ||
| 61 | public CommonResult<SysAuthPermissionInfoRespVO> getPermissionInfo() { | 63 | public CommonResult<SysAuthPermissionInfoRespVO> getPermissionInfo() { |
| 62 | // 获得用户信息 | 64 | // 获得用户信息 |
| 63 | SysUserDO user = userService.getUser(getLoginUserId()); | 65 | SysUserDO user = userService.getUser(getLoginUserId()); |
src/main/resources/logback-spring.xml
| 1 | -<configuration> | 1 | +<configuration> |
| 2 | + | ||
| 2 | <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> | 3 | <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> |
| 3 | <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> | 4 | <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> |
| 4 | - <layout class="cn.iocoder.dashboard.framework.tracer.skywalking.TraceIdPatternLogbackLayout"> | 5 | + <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout"> |
| 5 | <pattern>%d{ISO8601} | %tid | %thread | %-5level | %msg%n</pattern> | 6 | <pattern>%d{ISO8601} | %tid | %thread | %-5level | %msg%n</pattern> |
| 6 | </layout> | 7 | </layout> |
| 7 | </encoder> | 8 | </encoder> |
| 8 | </appender> | 9 | </appender> |
| 10 | + | ||
| 9 | <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | 11 | <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
| 10 | <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> | 12 | <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
| 11 | <FileNamePattern>./logs/ruoyi-vue-pro-%d{yyyy-MM-dd_HH}.log</FileNamePattern> | 13 | <FileNamePattern>./logs/ruoyi-vue-pro-%d{yyyy-MM-dd_HH}.log</FileNamePattern> |
| @@ -20,13 +22,20 @@ | @@ -20,13 +22,20 @@ | ||
| 20 | <MaxFileSize>10MB</MaxFileSize> | 22 | <MaxFileSize>10MB</MaxFileSize> |
| 21 | </triggeringPolicy> | 23 | </triggeringPolicy> |
| 22 | </appender> | 24 | </appender> |
| 25 | + | ||
| 23 | <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender"> | 26 | <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender"> |
| 24 | <discardingThreshold>0</discardingThreshold> | 27 | <discardingThreshold>0</discardingThreshold> |
| 25 | <queueSize>10</queueSize> | 28 | <queueSize>10</queueSize> |
| 26 | <appender-ref ref="FILE"/> | 29 | <appender-ref ref="FILE"/> |
| 27 | </appender> | 30 | </appender> |
| 31 | + | ||
| 28 | <!-- skywalking grpc 日志收集 8.4.0版本开始支持 --> | 32 | <!-- skywalking grpc 日志收集 8.4.0版本开始支持 --> |
| 29 | <appender name="GRPC" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender"> | 33 | <appender name="GRPC" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender"> |
| 34 | + <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> | ||
| 35 | + <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout"> | ||
| 36 | + <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] %-5level %logger{36} -%msg%n</Pattern> | ||
| 37 | + </layout> | ||
| 38 | + </encoder>s | ||
| 30 | </appender> | 39 | </appender> |
| 31 | 40 | ||
| 32 | <springProfile name="dev"> | 41 | <springProfile name="dev"> |
| @@ -35,12 +44,14 @@ | @@ -35,12 +44,14 @@ | ||
| 35 | <appender-ref ref="ASYNC"/> | 44 | <appender-ref ref="ASYNC"/> |
| 36 | </logger> | 45 | </logger> |
| 37 | </springProfile> | 46 | </springProfile> |
| 47 | + | ||
| 38 | <springProfile name="local"> | 48 | <springProfile name="local"> |
| 39 | <logger name="cn.iocoder.dashboard" level="INFO" additivity="false"> | 49 | <logger name="cn.iocoder.dashboard" level="INFO" additivity="false"> |
| 40 | <appender-ref ref="STDOUT"/> | 50 | <appender-ref ref="STDOUT"/> |
| 41 | <appender-ref ref="GRPC"/> | 51 | <appender-ref ref="GRPC"/> |
| 42 | </logger> | 52 | </logger> |
| 43 | </springProfile> | 53 | </springProfile> |
| 54 | + | ||
| 44 | <springProfile name="default"> | 55 | <springProfile name="default"> |
| 45 | <logger name="cn.iocoder.dashboard" level="INFO" additivity="false"> | 56 | <logger name="cn.iocoder.dashboard" level="INFO" additivity="false"> |
| 46 | <appender-ref ref="STDOUT"/> | 57 | <appender-ref ref="STDOUT"/> |
| @@ -48,7 +59,7 @@ | @@ -48,7 +59,7 @@ | ||
| 48 | </logger> | 59 | </logger> |
| 49 | </springProfile> | 60 | </springProfile> |
| 50 | 61 | ||
| 51 | - <root level="DEBUG"> | 62 | + <root level="INFO"> |
| 52 | <appender-ref ref="STDOUT"/> | 63 | <appender-ref ref="STDOUT"/> |
| 53 | <appender-ref ref="ASYNC"/> | 64 | <appender-ref ref="ASYNC"/> |
| 54 | </root> | 65 | </root> |
| @@ -56,4 +67,4 @@ | @@ -56,4 +67,4 @@ | ||
| 56 | <logger name="cn.iocoder.dashboard" level="INFO"> | 67 | <logger name="cn.iocoder.dashboard" level="INFO"> |
| 57 | <appender-ref ref="STDOUT"/> | 68 | <appender-ref ref="STDOUT"/> |
| 58 | </logger> | 69 | </logger> |
| 59 | -</configuration> | ||
| 60 | \ No newline at end of file | 70 | \ No newline at end of file |
| 71 | +</configuration> |