diff --git a/src/main/java/cn/iocoder/dashboard/framework/tracer/core/util/TracerUtils.java b/src/main/java/cn/iocoder/dashboard/framework/tracer/core/util/TracerUtils.java index 1a6b29cb1..777c273cb 100644 --- a/src/main/java/cn/iocoder/dashboard/framework/tracer/core/util/TracerUtils.java +++ b/src/main/java/cn/iocoder/dashboard/framework/tracer/core/util/TracerUtils.java @@ -30,7 +30,9 @@ public class TracerUtils { } } catch (Throwable ignore) {} // TODO 芋艿 多次调用会问题 - return UUID.randomUUID().toString(); + + // TODO 麻薯 定义一个给外部扩展的接口,默认在未接入Skywalking时,输出UUID + return "UUID:" + UUID.randomUUID().toString(); } } diff --git a/src/main/java/cn/iocoder/dashboard/framework/tracer/skywalking/LocalLogbackPatternConverter.java b/src/main/java/cn/iocoder/dashboard/framework/tracer/skywalking/LocalLogbackPatternConverter.java new file mode 100644 index 000000000..3b69098d2 --- /dev/null +++ b/src/main/java/cn/iocoder/dashboard/framework/tracer/skywalking/LocalLogbackPatternConverter.java @@ -0,0 +1,42 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + + +package cn.iocoder.dashboard.framework.tracer.skywalking; + +import ch.qos.logback.classic.pattern.ClassicConverter; +import ch.qos.logback.classic.spi.ILoggingEvent; +import cn.iocoder.dashboard.framework.tracer.core.util.TracerUtils; + +/** + * Created by mashu on 2021/3/6. + */ +public class LocalLogbackPatternConverter extends ClassicConverter { + /** + * 作为默认的方式, 从{@link TracerUtils}中获取traceId, + * 需要用这个去替代logback的Layout, + * 同时避免了sky-walking agent生效的情况下仍然输出定值的问题. + * + * @param iLoggingEvent the event + * @return the traceId: UUID, or the real traceId. + */ + @Override + public String convert(ILoggingEvent iLoggingEvent) { + return TracerUtils.getTraceId(); + } +} diff --git a/src/main/java/cn/iocoder/dashboard/framework/tracer/skywalking/TraceIdPatternLogbackLayout.java b/src/main/java/cn/iocoder/dashboard/framework/tracer/skywalking/TraceIdPatternLogbackLayout.java new file mode 100644 index 000000000..6891c782b --- /dev/null +++ b/src/main/java/cn/iocoder/dashboard/framework/tracer/skywalking/TraceIdPatternLogbackLayout.java @@ -0,0 +1,36 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + + +package cn.iocoder.dashboard.framework.tracer.skywalking; + +import ch.qos.logback.classic.PatternLayout; + +/** + * Based on the logback-compoenent convert register mechanism, + * register {@link LocalLogbackPatternConverter} as a new convert, match to "tid". + * You can use "%tid" in logback config file, "Pattern" section. + * If sky-walking agent is not active mode, it will use UUID as tid. + *

+ * Created by mashu on 2021/3/6. + */ +public class TraceIdPatternLogbackLayout extends PatternLayout { + static { + defaultConverterMap.put("tid", LocalLogbackPatternConverter.class.getName()); + } +} diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml new file mode 100644 index 000000000..840addd7e --- /dev/null +++ b/src/main/resources/logback-spring.xml @@ -0,0 +1,55 @@ +    +       + + + %d{ISO8601} | %tid | %thread | %-5level | %msg%n + + + + + + ./logs/ruoyi-vue-pro-%d{yyyy-MM-dd_HH}.log + 3 + + + + %d{ISO8601} | %tid | %thread | %-5level | %msg%n + + + + 10MB + + + + 0 + 10 + + + + + + + + + + + + + + + + + + + + + +        +     +   + + + + + + \ No newline at end of file