diff --git a/src/main/java/com/our/base/easylog/logback/config/CustomLoggerContextInitializer.java b/src/main/java/com/our/base/easylog/logback/LogbackInitializer.java similarity index 55% rename from src/main/java/com/our/base/easylog/logback/config/CustomLoggerContextInitializer.java rename to src/main/java/com/our/base/easylog/logback/LogbackInitializer.java index cd6dcff41332f52a6effc2f6b05f7912780ff620..c52e712c0b74552bbf1685e272218b9fd72bcabc 100644 --- a/src/main/java/com/our/base/easylog/logback/config/CustomLoggerContextInitializer.java +++ b/src/main/java/com/our/base/easylog/logback/LogbackInitializer.java @@ -1,34 +1,36 @@ -package com.our.base.easylog.logback.config; +package com.our.base.easylog.logback; import ch.qos.logback.classic.Level; -import ch.qos.logback.classic.Logger; import ch.qos.logback.classic.LoggerContext; -import ch.qos.logback.classic.encoder.PatternLayoutEncoder; import ch.qos.logback.classic.joran.JoranConfigurator; -import ch.qos.logback.classic.spi.LoggerContextListener; +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.core.encoder.LayoutWrappingEncoder; import ch.qos.logback.core.joran.spi.JoranException; -import ch.qos.logback.core.spi.ContextAwareBase; import com.our.base.easylog.logback.appender.PushLogAppender; +import lombok.extern.slf4j.Slf4j; import org.slf4j.LoggerFactory; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.context.ApplicationContextInitializer; +import org.springframework.context.ConfigurableApplicationContext; import java.net.URL; /** - * @author Alice - * @Description logback初始化接口 - * @date 2023/12/5 + * @author poison + * @Description logback 初始化实现 (在spring boot 初始化之前) + * @date 2023/12/6 **/ -public class CustomLoggerContextInitializer extends ContextAwareBase implements LoggerContextListener { - @Override - public boolean isResetResistant() { - return true; - } +@ConditionalOnClass(name = "ch.qos.logback.classic.LoggerContext") +@Slf4j +public class LogbackInitializer implements ApplicationContextInitializer { @Override - public void onStart(LoggerContext loggerContext) { + public void initialize(ConfigurableApplicationContext configurableApplicationContext) { + + LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory(); - loggerContext.reset(); JoranConfigurator configurator = new JoranConfigurator(); + String springLogbackFile="logback-spring.xml"; String logbackFilePath="logback.xml"; configurator.setContext(loggerContext); @@ -40,16 +42,15 @@ public class CustomLoggerContextInitializer extends ContextAwareBase implements } else if (logbackUrl != null) { configurator.doConfigure(logbackUrl); } else { - System.err.println("没有找到logback配置文件"); + log.error("没有找到logback配置文件"); } } catch (JoranException exception){ - System.err.println("没有正确加载logback配置文件:"+ exception.getMessage()); + log.error("没有正确加载logback配置文件:"+ exception.getMessage()); } - PatternLayoutEncoder encoder = new PatternLayoutEncoder(); + LayoutWrappingEncoder encoder = new LayoutWrappingEncoder<>(); encoder.setContext(loggerContext); - encoder.setPattern("%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"); encoder.start(); PushLogAppender pushLogAppender = new PushLogAppender(); pushLogAppender.start(); @@ -57,20 +58,6 @@ public class CustomLoggerContextInitializer extends ContextAwareBase implements logger.setLevel(Level.INFO); logger.addAppender(pushLogAppender); pushLogAppender.setContext(loggerContext); - } - - @Override - public void onReset(LoggerContext loggerContext) { - - } - - @Override - public void onStop(LoggerContext loggerContext) { - - } - - @Override - public void onLevelChange(Logger logger, Level level) { } } diff --git a/src/main/resources/META-INF/services/ch.qos.logback.classic.spi.LoggerContextListener b/src/main/resources/META-INF/services/ch.qos.logback.classic.spi.LoggerContextListener deleted file mode 100644 index 8c4b84ed4cfcd149f3f9fc5e5eb423bd626b4d62..0000000000000000000000000000000000000000 --- a/src/main/resources/META-INF/services/ch.qos.logback.classic.spi.LoggerContextListener +++ /dev/null @@ -1 +0,0 @@ -com.our.base.easylog.logback.config.CustomLoggerContextInitializer \ No newline at end of file diff --git a/src/main/resources/META-INF/spring.factories b/src/main/resources/META-INF/spring.factories index 752243015078c2a887b46ba19e0840d4f792af85..c433c81f6775a804ad91736fcc8d102572fe533b 100644 --- a/src/main/resources/META-INF/spring.factories +++ b/src/main/resources/META-INF/spring.factories @@ -1,2 +1,3 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -com.our.base.easylog.EasyLogAutoConfigure \ No newline at end of file +com.our.base.easylog.EasyLogAutoConfigure +org.springframework.context.ApplicationContextInitializer=\com.our.base.easylog.logback.LogbackInitializer \ No newline at end of file