From a2ea808b7d19a77289e11eaf6db21c9d52e470ff Mon Sep 17 00:00:00 2001 From: "mai.jh" Date: Sat, 26 Dec 2020 13:18:30 +0800 Subject: [PATCH] [ISSUE-#4567] Refactor nacos-client Load Logging Configuration code. (#4572) * for #4567, refactor nacos-client logging load Configuration code. * Modify exception handling. * When customizing AbstractNacosLogging Load Configuration Fail, use the default Logging Load Configuration. * NacosLogging has been modified to a single-column mode. --- .../nacos/client/logging/NacosLogging.java | 70 +++++++++++++++++++ .../alibaba/nacos/client/utils/LogUtils.java | 32 +-------- 2 files changed, 72 insertions(+), 30 deletions(-) create mode 100644 client/src/main/java/com/alibaba/nacos/client/logging/NacosLogging.java diff --git a/client/src/main/java/com/alibaba/nacos/client/logging/NacosLogging.java b/client/src/main/java/com/alibaba/nacos/client/logging/NacosLogging.java new file mode 100644 index 00000000000..350ffbb020b --- /dev/null +++ b/client/src/main/java/com/alibaba/nacos/client/logging/NacosLogging.java @@ -0,0 +1,70 @@ +/* + * Copyright 1999-2018 Alibaba Group Holding Ltd. + * + * Licensed 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.alibaba.nacos.client.logging; + +import com.alibaba.nacos.client.logging.log4j2.Log4J2NacosLogging; +import com.alibaba.nacos.client.logging.logback.LogbackNacosLogging; +import org.slf4j.LoggerFactory; +import org.slf4j.Logger; + +/** + * nacos logging. + * + * @author mai.jh + */ +public class NacosLogging { + + private static final Logger LOGGER = LoggerFactory.getLogger(NacosLogging.class); + + private AbstractNacosLogging nacosLogging; + + private boolean isLogback = false; + + private NacosLogging() { + try { + Class.forName("ch.qos.logback.classic.Logger"); + nacosLogging = new LogbackNacosLogging(); + isLogback = true; + } catch (ClassNotFoundException e) { + nacosLogging = new Log4J2NacosLogging(); + } + } + + private static class NacosLoggingInstance { + + private static final NacosLogging INSTANCE = new NacosLogging(); + } + + public static NacosLogging getInstance() { + return NacosLoggingInstance.INSTANCE; + } + + /** + * Load logging Configuration. + */ + public void loadConfiguration() { + try { + nacosLogging.loadConfiguration(); + } catch (Throwable t) { + if (isLogback) { + LOGGER.warn("Load Logback Configuration of Nacos fail, message: {}", t.getMessage()); + } else { + LOGGER.warn("Load Log4j Configuration of Nacos fail, message: {}", t.getMessage()); + } + } + } +} diff --git a/client/src/main/java/com/alibaba/nacos/client/utils/LogUtils.java b/client/src/main/java/com/alibaba/nacos/client/utils/LogUtils.java index dc8b39f5561..46f021493a5 100644 --- a/client/src/main/java/com/alibaba/nacos/client/utils/LogUtils.java +++ b/client/src/main/java/com/alibaba/nacos/client/utils/LogUtils.java @@ -16,9 +16,7 @@ package com.alibaba.nacos.client.utils; -import com.alibaba.nacos.client.logging.AbstractNacosLogging; -import com.alibaba.nacos.client.logging.log4j2.Log4J2NacosLogging; -import com.alibaba.nacos.client.logging.logback.LogbackNacosLogging; +import com.alibaba.nacos.client.logging.NacosLogging; import org.slf4j.Logger; import static org.slf4j.LoggerFactory.getLogger; @@ -34,33 +32,7 @@ public class LogUtils { public static final Logger NAMING_LOGGER; static { - try { - boolean isLogback = false; - AbstractNacosLogging nacosLogging; - - try { - Class.forName("ch.qos.logback.classic.Logger"); - nacosLogging = new LogbackNacosLogging(); - isLogback = true; - } catch (ClassNotFoundException e) { - nacosLogging = new Log4J2NacosLogging(); - } - - try { - nacosLogging.loadConfiguration(); - } catch (Throwable t) { - if (isLogback) { - getLogger(LogUtils.class) - .warn("Load Logback Configuration of Nacos fail, message: {}", t.getMessage()); - } else { - getLogger(LogUtils.class) - .warn("Load Log4j Configuration of Nacos fail, message: {}", t.getMessage()); - } - } - } catch (Throwable ex) { - getLogger(LogUtils.class).warn("Init Nacos Logging fail, message: {}", ex.getMessage()); - } - + NacosLogging.getInstance().loadConfiguration(); NAMING_LOGGER = getLogger("com.alibaba.nacos.client.naming"); }