From 227ce07355e7c38d988f508b90911a23c1ece8f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CHzjNeverStop=E2=80=9D?= <“441627022@qq.com”> Date: Fri, 22 Mar 2024 11:22:38 +0800 Subject: [PATCH 1/4] update 2.1.1-SNAPSHOT --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ee1310d..b98d3af 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.alipay.sofa.common sofa-common-tools - 2.1.0 + 2.1.1-SNAPSHOT jar ${project.groupId}:${project.artifactId} From 83e76efe03c304bb233d34bbd6c8222a2ae9dcf5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CHzjNeverStop=E2=80=9D?= <“441627022@qq.com”> Date: Fri, 22 Mar 2024 14:29:09 +0800 Subject: [PATCH 2/4] enable other class find all threadpool and logspaces --- .../alipay/sofa/common/log/MultiAppLoggerSpaceManager.java | 5 +++++ .../com/alipay/sofa/common/thread/ThreadPoolGovernor.java | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/main/java/com/alipay/sofa/common/log/MultiAppLoggerSpaceManager.java b/src/main/java/com/alipay/sofa/common/log/MultiAppLoggerSpaceManager.java index 298940c..f1bd23d 100644 --- a/src/main/java/com/alipay/sofa/common/log/MultiAppLoggerSpaceManager.java +++ b/src/main/java/com/alipay/sofa/common/log/MultiAppLoggerSpaceManager.java @@ -32,6 +32,7 @@ import org.slf4j.Logger; import java.util.Collections; +import java.util.HashMap; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -361,4 +362,8 @@ private static AbstractLoggerSpaceFactory createILoggerFactory(SpaceId spaceId, return NOP_LOGGER_FACTORY; } + + public static Map getLogFactoryMap() { + return new HashMap<>(LOG_FACTORY_MAP); + } } diff --git a/src/main/java/com/alipay/sofa/common/thread/ThreadPoolGovernor.java b/src/main/java/com/alipay/sofa/common/thread/ThreadPoolGovernor.java index 4907841..ea2a077 100644 --- a/src/main/java/com/alipay/sofa/common/thread/ThreadPoolGovernor.java +++ b/src/main/java/com/alipay/sofa/common/thread/ThreadPoolGovernor.java @@ -20,6 +20,8 @@ import com.alipay.sofa.common.thread.space.ThreadPoolSpace; import com.alipay.sofa.common.utils.StringUtil; +import java.util.ArrayList; +import java.util.Collection; import java.util.Map; import java.util.concurrent.*; @@ -366,4 +368,7 @@ public void setMonitorThreadPoolBySpaceName(String spaceName, long period) { }); ThreadLogger.info("Thread pool with spaceName '{}' rescheduled with period '{}'", spaceName, period); } + public Collection getAllThreadPoolWrappers() { + return new ArrayList<>(registry.values()); + } } From a8176c44a1197919b0be9bbd88d5d2d3c1ce023b Mon Sep 17 00:00:00 2001 From: Cnight <37564566+muqingcai@users.noreply.github.com> Date: Mon, 13 May 2024 16:20:50 +0800 Subject: [PATCH 3/4] Add recorder support --- .../sofa/common/insight/NoopRecorder.java | 38 +++ .../sofa/common/insight/RecordContext.java | 222 ++++++++++++++++++ .../sofa/common/insight/RecordScene.java | 60 +++++ .../alipay/sofa/common/insight/Recorder.java | 40 ++++ .../sofa/common/insight/RecorderManager.java | 56 +++++ .../common/recorder/RecorderManagerTest.java | 39 +++ .../sofa/common/recorder/SampleRecorder.java | 41 ++++ .../com.alipay.sofa.common.insight.Recorder | 1 + 8 files changed, 497 insertions(+) create mode 100644 src/main/java/com/alipay/sofa/common/insight/NoopRecorder.java create mode 100644 src/main/java/com/alipay/sofa/common/insight/RecordContext.java create mode 100644 src/main/java/com/alipay/sofa/common/insight/RecordScene.java create mode 100644 src/main/java/com/alipay/sofa/common/insight/Recorder.java create mode 100644 src/main/java/com/alipay/sofa/common/insight/RecorderManager.java create mode 100644 src/test/java/com/alipay/sofa/common/recorder/RecorderManagerTest.java create mode 100644 src/test/java/com/alipay/sofa/common/recorder/SampleRecorder.java create mode 100644 src/test/resources/META-INF/services/com.alipay.sofa.common.insight.Recorder diff --git a/src/main/java/com/alipay/sofa/common/insight/NoopRecorder.java b/src/main/java/com/alipay/sofa/common/insight/NoopRecorder.java new file mode 100644 index 0000000..090fb75 --- /dev/null +++ b/src/main/java/com/alipay/sofa/common/insight/NoopRecorder.java @@ -0,0 +1,38 @@ +/* + * 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 com.alipay.sofa.common.insight; + +/** + * @author muqingcai + * @date 2024年4月19日 上午9:54:51 + */ +public class NoopRecorder implements Recorder { + public static final NoopRecorder INSTANCE = new NoopRecorder(); + + private NoopRecorder() { + } + + @Override + public void start(RecordScene scene, RecordContext context) { + + } + + @Override + public void stop(RecordScene scene, RecordContext context) { + + } +} diff --git a/src/main/java/com/alipay/sofa/common/insight/RecordContext.java b/src/main/java/com/alipay/sofa/common/insight/RecordContext.java new file mode 100644 index 0000000..926e190 --- /dev/null +++ b/src/main/java/com/alipay/sofa/common/insight/RecordContext.java @@ -0,0 +1,222 @@ +/* + * 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 com.alipay.sofa.common.insight; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * @author muqingcai + * @date 2024年4月19日 上午9:54:59 + */ +public class RecordContext { + private int requestId; + private String traceId; + private String rpcId; + private String targetServiceUniqueName; + private String methodName; + private String moduleName; + private String beanName; + private Map extraInfo; + + /** + * Constructor. + */ + public RecordContext() { + this.extraInfo = new ConcurrentHashMap<>(); + } + + /** + * Constructor. + * + * @param requestId the request id + */ + public RecordContext(int requestId) { + this.requestId = requestId; + this.extraInfo = new ConcurrentHashMap<>(); + } + + /** + * Constructor. + * + * @param moduleName the module name + * @param beanName the bean name + */ + public RecordContext(String moduleName, String beanName) { + this.extraInfo = new ConcurrentHashMap<>(); + this.moduleName = moduleName; + this.beanName = beanName; + } + + /** + * Gets get request id. + * + * @return the get request id + */ + public int getRequestId() { + return requestId; + } + + /** + * Sets set request id. + * + * @param requestId the request id + */ + public void setRequestId(int requestId) { + this.requestId = requestId; + } + + /** + * Gets get trace id. + * + * @return the get trace id + */ + public String getTraceId() { + return traceId; + } + + /** + * Sets set trace id. + * + * @param traceId the trace id + */ + public void setTraceId(String traceId) { + this.traceId = traceId; + } + + /** + * Gets get rpc id. + * + * @return the get rpc id + */ + public String getRpcId() { + return rpcId; + } + + /** + * Sets set rpc id. + * + * @param rpcId the rpc id + */ + public void setRpcId(String rpcId) { + this.rpcId = rpcId; + } + + /** + * Gets get target service unique name. + * + * @return the get target service unique name + */ + public String getTargetServiceUniqueName() { + return targetServiceUniqueName; + } + + /** + * Sets set target service unique name. + * + * @param targetServiceUniqueName the target service unique name + */ + public void setTargetServiceUniqueName(String targetServiceUniqueName) { + this.targetServiceUniqueName = targetServiceUniqueName; + } + + /** + * Gets get method name. + * + * @return the get method name + */ + public String getMethodName() { + return methodName; + } + + /** + * Sets set method name. + * + * @param methodName the method name + */ + public void setMethodName(String methodName) { + this.methodName = methodName; + } + + /** + * Gets get module name. + * + * @return the get module name + */ + public String getModuleName() { + return moduleName; + } + + /** + * Sets set module name. + * + * @param moduleName the module name + */ + public void setModuleName(String moduleName) { + this.moduleName = moduleName; + } + + /** + * Gets get bean name. + * + * @return the get bean name + */ + public String getBeanName() { + return beanName; + } + + /** + * Sets set bean name. + * + * @param beanName the bean name + */ + public void setBeanName(String beanName) { + this.beanName = beanName; + } + + /** + * Gets get extra info. + * + * @return the get extra info + */ + public Map getExtraInfo() { + return extraInfo; + } + + /** + * Sets set extra info. + * + * @param extraInfo the extra info + */ + public void setExtraInfo(Map extraInfo) { + this.extraInfo = extraInfo; + } + + /** + * To string string. + * + * @return the string + */ + @Override + public String toString() { + return "RecordContext{" + "requestId=" + requestId + ", traceId='" + traceId + '\'' + + ", rpcId='" + rpcId + '\'' + ", targetServiceUniqueName='" + + targetServiceUniqueName + '\'' + ", methodName='" + methodName + '\'' + + ", moduleName='" + moduleName + '\'' + ", beanName='" + beanName + '\'' + + ", extraInfo=" + extraInfo + '}'; + } +} diff --git a/src/main/java/com/alipay/sofa/common/insight/RecordScene.java b/src/main/java/com/alipay/sofa/common/insight/RecordScene.java new file mode 100644 index 0000000..2b891df --- /dev/null +++ b/src/main/java/com/alipay/sofa/common/insight/RecordScene.java @@ -0,0 +1,60 @@ +/* + * 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 com.alipay.sofa.common.insight; + +/** + * @author muqingcai + * @date 2024年4月19日 上午9:55:54 + */ +public enum RecordScene { + /** + * record 场景 + */ + BOLT_REQUEST_HANDLE("boltRequestHandle", "bolt 协议 RPC 请求处理"), + + TR_REQUEST_HANDLE("trRequestHandle", "tr 协议 RPC 请求处理"), + + SOFA_STARTUP("sofaStartup", "应用启动"), + + SPRING_BEAN_REFRESH("springBeanRefresh", "应用 bean 刷新"); + + private final String scene; + private final String desc; + + RecordScene(String scene, String desc) { + this.scene = scene; + this.desc = desc; + } + + /** + * Gets get scene. + * + * @return the get scene + */ + public String getScene() { + return scene; + } + + /** + * Gets get desc. + * + * @return the get desc + */ + public String getDesc() { + return desc; + } +} diff --git a/src/main/java/com/alipay/sofa/common/insight/Recorder.java b/src/main/java/com/alipay/sofa/common/insight/Recorder.java new file mode 100644 index 0000000..44032bd --- /dev/null +++ b/src/main/java/com/alipay/sofa/common/insight/Recorder.java @@ -0,0 +1,40 @@ +/* + * 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 com.alipay.sofa.common.insight; + +/** + * @author muqingcai + * @date 2024年4月11日 下午9:56:03 + */ +public interface Recorder { + + /** + * Start record + * + * @param scene the scene + * @param context the context + */ + void start(RecordScene scene, RecordContext context); + + /** + * Stop record + * + * @param scene the scene + * @param context the context + */ + void stop(RecordScene scene, RecordContext context); +} diff --git a/src/main/java/com/alipay/sofa/common/insight/RecorderManager.java b/src/main/java/com/alipay/sofa/common/insight/RecorderManager.java new file mode 100644 index 0000000..0a04bf6 --- /dev/null +++ b/src/main/java/com/alipay/sofa/common/insight/RecorderManager.java @@ -0,0 +1,56 @@ +/* + * 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 com.alipay.sofa.common.insight; + +import com.alipay.sofa.common.config.log.ConfigLoggerFactory; +import org.slf4j.Logger; + +import java.util.Iterator; +import java.util.ServiceLoader; +import java.util.concurrent.atomic.AtomicReference; + +/** + * @author muqingcai + * @date 2024年4月11日 下午2:32:31 + */ +public class RecorderManager { + private static final Logger LOGGER = ConfigLoggerFactory.getLogger(RecorderManager.class); + private static final AtomicReference RECORDER = new AtomicReference<>(NoopRecorder.INSTANCE); + + public static Recorder getRecorder() { + return RECORDER.get(); + } + + public static void init() { + Recorder targetRecorder = null; + ServiceLoader loader = ServiceLoader.load(Recorder.class); + Iterator iterator = loader.iterator(); + if (iterator.hasNext()) { + targetRecorder = iterator.next(); + } + if (targetRecorder != null) { + boolean state = RECORDER.compareAndSet(NoopRecorder.INSTANCE, targetRecorder); + if (state) { + if (LOGGER.isInfoEnabled()) { + LOGGER.info("Init recorder successfully, class: {}", targetRecorder.getClass().getName()); + } + } else { + LOGGER.warn("Cannot init recorder repeatedly "); + } + } + } +} diff --git a/src/test/java/com/alipay/sofa/common/recorder/RecorderManagerTest.java b/src/test/java/com/alipay/sofa/common/recorder/RecorderManagerTest.java new file mode 100644 index 0000000..6d9d229 --- /dev/null +++ b/src/test/java/com/alipay/sofa/common/recorder/RecorderManagerTest.java @@ -0,0 +1,39 @@ +/* + * 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 com.alipay.sofa.common.recorder; + +import com.alipay.sofa.common.insight.NoopRecorder; +import com.alipay.sofa.common.insight.Recorder; +import com.alipay.sofa.common.insight.RecorderManager; +import org.junit.Assert; +import org.junit.Test; + +/** + * @author muqingcai + * @date 2024年5月13日 下午12:45:52 + */ +public class RecorderManagerTest { + @Test + public void testGetRecorder() { + Recorder recorderBeforeInit = RecorderManager.getRecorder(); + Assert.assertTrue(recorderBeforeInit instanceof NoopRecorder); + + RecorderManager.init(); + Recorder recorderAfterInit = RecorderManager.getRecorder(); + Assert.assertTrue(recorderAfterInit instanceof SampleRecorder); + } +} diff --git a/src/test/java/com/alipay/sofa/common/recorder/SampleRecorder.java b/src/test/java/com/alipay/sofa/common/recorder/SampleRecorder.java new file mode 100644 index 0000000..8744938 --- /dev/null +++ b/src/test/java/com/alipay/sofa/common/recorder/SampleRecorder.java @@ -0,0 +1,41 @@ +/* + * 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 com.alipay.sofa.common.recorder; + +import com.alipay.sofa.common.insight.RecordContext; +import com.alipay.sofa.common.insight.RecordScene; +import com.alipay.sofa.common.insight.Recorder; + +import java.io.PrintStream; + +/** + * @author muqingcai + * @date 2024年5月13日 下午12:45:58 + */ +public class SampleRecorder implements Recorder { + private static final PrintStream TTY = System.out; + + @Override + public void start(RecordScene scene, RecordContext context) { + TTY.println("Recorder start, scene: " + scene + " context: " + context); + } + + @Override + public void stop(RecordScene scene, RecordContext context) { + TTY.println("Recorder stop, scene: " + scene + " context: " + context); + } +} diff --git a/src/test/resources/META-INF/services/com.alipay.sofa.common.insight.Recorder b/src/test/resources/META-INF/services/com.alipay.sofa.common.insight.Recorder new file mode 100644 index 0000000..d3521d5 --- /dev/null +++ b/src/test/resources/META-INF/services/com.alipay.sofa.common.insight.Recorder @@ -0,0 +1 @@ +com.alipay.sofa.common.recorder.SampleRecorder From 3bbe0140ff9828cd81083380d46ecc54dea6a47a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CHzjNeverStop=E2=80=9D?= <“441627022@qq.com”> Date: Tue, 21 May 2024 10:27:43 +0800 Subject: [PATCH 4/4] fix javadocs --- src/main/java/com/alipay/sofa/common/insight/NoopRecorder.java | 2 +- src/main/java/com/alipay/sofa/common/insight/RecordContext.java | 2 +- src/main/java/com/alipay/sofa/common/insight/RecordScene.java | 2 +- src/main/java/com/alipay/sofa/common/insight/Recorder.java | 2 +- .../java/com/alipay/sofa/common/insight/RecorderManager.java | 2 +- .../com/alipay/sofa/common/recorder/RecorderManagerTest.java | 2 +- .../java/com/alipay/sofa/common/recorder/SampleRecorder.java | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/alipay/sofa/common/insight/NoopRecorder.java b/src/main/java/com/alipay/sofa/common/insight/NoopRecorder.java index 090fb75..a2886ae 100644 --- a/src/main/java/com/alipay/sofa/common/insight/NoopRecorder.java +++ b/src/main/java/com/alipay/sofa/common/insight/NoopRecorder.java @@ -18,7 +18,7 @@ /** * @author muqingcai - * @date 2024年4月19日 上午9:54:51 + * @version 2024年4月19日 上午9:54:51 */ public class NoopRecorder implements Recorder { public static final NoopRecorder INSTANCE = new NoopRecorder(); diff --git a/src/main/java/com/alipay/sofa/common/insight/RecordContext.java b/src/main/java/com/alipay/sofa/common/insight/RecordContext.java index 926e190..de0670d 100644 --- a/src/main/java/com/alipay/sofa/common/insight/RecordContext.java +++ b/src/main/java/com/alipay/sofa/common/insight/RecordContext.java @@ -21,7 +21,7 @@ /** * @author muqingcai - * @date 2024年4月19日 上午9:54:59 + * @version 2024年4月19日 上午9:54:59 */ public class RecordContext { private int requestId; diff --git a/src/main/java/com/alipay/sofa/common/insight/RecordScene.java b/src/main/java/com/alipay/sofa/common/insight/RecordScene.java index 2b891df..78feb35 100644 --- a/src/main/java/com/alipay/sofa/common/insight/RecordScene.java +++ b/src/main/java/com/alipay/sofa/common/insight/RecordScene.java @@ -18,7 +18,7 @@ /** * @author muqingcai - * @date 2024年4月19日 上午9:55:54 + * @version 2024年4月19日 上午9:55:54 */ public enum RecordScene { /** diff --git a/src/main/java/com/alipay/sofa/common/insight/Recorder.java b/src/main/java/com/alipay/sofa/common/insight/Recorder.java index 44032bd..478908b 100644 --- a/src/main/java/com/alipay/sofa/common/insight/Recorder.java +++ b/src/main/java/com/alipay/sofa/common/insight/Recorder.java @@ -18,7 +18,7 @@ /** * @author muqingcai - * @date 2024年4月11日 下午9:56:03 + * @version 2024年4月11日 下午9:56:03 */ public interface Recorder { diff --git a/src/main/java/com/alipay/sofa/common/insight/RecorderManager.java b/src/main/java/com/alipay/sofa/common/insight/RecorderManager.java index 0a04bf6..97961c1 100644 --- a/src/main/java/com/alipay/sofa/common/insight/RecorderManager.java +++ b/src/main/java/com/alipay/sofa/common/insight/RecorderManager.java @@ -25,7 +25,7 @@ /** * @author muqingcai - * @date 2024年4月11日 下午2:32:31 + * @version 2024年4月11日 下午2:32:31 */ public class RecorderManager { private static final Logger LOGGER = ConfigLoggerFactory.getLogger(RecorderManager.class); diff --git a/src/test/java/com/alipay/sofa/common/recorder/RecorderManagerTest.java b/src/test/java/com/alipay/sofa/common/recorder/RecorderManagerTest.java index 6d9d229..f6fb8ec 100644 --- a/src/test/java/com/alipay/sofa/common/recorder/RecorderManagerTest.java +++ b/src/test/java/com/alipay/sofa/common/recorder/RecorderManagerTest.java @@ -24,7 +24,7 @@ /** * @author muqingcai - * @date 2024年5月13日 下午12:45:52 + * @version 2024年5月13日 下午12:45:52 */ public class RecorderManagerTest { @Test diff --git a/src/test/java/com/alipay/sofa/common/recorder/SampleRecorder.java b/src/test/java/com/alipay/sofa/common/recorder/SampleRecorder.java index 8744938..903f1f9 100644 --- a/src/test/java/com/alipay/sofa/common/recorder/SampleRecorder.java +++ b/src/test/java/com/alipay/sofa/common/recorder/SampleRecorder.java @@ -24,7 +24,7 @@ /** * @author muqingcai - * @date 2024年5月13日 下午12:45:58 + * @version 2024年5月13日 下午12:45:58 */ public class SampleRecorder implements Recorder { private static final PrintStream TTY = System.out;