|
@@ -0,0 +1,85 @@
|
|
|
|
|
+package cn.reghao.autodop.dagent.utils.spring;
|
|
|
|
|
+
|
|
|
|
|
+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.spi.ILoggingEvent;
|
|
|
|
|
+import ch.qos.logback.core.Appender;
|
|
|
|
|
+import ch.qos.logback.core.ConsoleAppender;
|
|
|
|
|
+import ch.qos.logback.core.FileAppender;
|
|
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
|
|
+import org.springframework.amqp.rabbit.logback.AmqpAppender;
|
|
|
|
|
+import org.springframework.boot.autoconfigure.amqp.RabbitProperties;
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * 编程方式配置 logback,相当于 logback-spring.xml 配置
|
|
|
|
|
+ *
|
|
|
|
|
+ * @author reghao
|
|
|
|
|
+ * @date 2021-02-23 23:53:35
|
|
|
|
|
+ */
|
|
|
|
|
+public class LoggerInitializer {
|
|
|
|
|
+ private LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
|
|
|
|
|
+
|
|
|
|
|
+ public void initialize(RabbitProperties rabbitProperties) {
|
|
|
|
|
+ Logger rootLogger = loggerContext.getLogger("ROOT");
|
|
|
|
|
+ rootLogger.setAdditive(false);
|
|
|
|
|
+ rootLogger.setLevel(Level.INFO);
|
|
|
|
|
+ rootLogger.addAppender(amqpAppender(rabbitProperties));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private Appender<ILoggingEvent> amqpAppender(RabbitProperties rabbitProperties) {
|
|
|
|
|
+ PatternLayoutEncoder layoutEncoder = new PatternLayoutEncoder();
|
|
|
|
|
+ layoutEncoder.setPattern("%date %level [%thread] %logger{10} [%file:%line] %msg%n");
|
|
|
|
|
+ layoutEncoder.setContext(loggerContext);
|
|
|
|
|
+ layoutEncoder.start();
|
|
|
|
|
+
|
|
|
|
|
+ AmqpAppender amqpAppender = new AmqpAppender();
|
|
|
|
|
+ amqpAppender.setName("mqAppender");
|
|
|
|
|
+ amqpAppender.setHost(rabbitProperties.getHost());
|
|
|
|
|
+ amqpAppender.setPort(rabbitProperties.getPort());
|
|
|
|
|
+ amqpAppender.setUsername(rabbitProperties.getUsername());
|
|
|
|
|
+ amqpAppender.setPassword(rabbitProperties.getPassword());
|
|
|
|
|
+ amqpAppender.setDeclareExchange(true);
|
|
|
|
|
+ amqpAppender.setExchangeType("direct");
|
|
|
|
|
+ amqpAppender.setExchangeName("rabbit.log");
|
|
|
|
|
+ amqpAppender.setRoutingKeyPattern("info");
|
|
|
|
|
+ amqpAppender.setDurable(true);
|
|
|
|
|
+ amqpAppender.setAutoDelete(false);
|
|
|
|
|
+ amqpAppender.setDeliveryMode("NON_PERSISTENT");
|
|
|
|
|
+ amqpAppender.setGenerateId(true);
|
|
|
|
|
+ amqpAppender.setCharset("UTF-8");
|
|
|
|
|
+ amqpAppender.setContext(loggerContext);
|
|
|
|
|
+ amqpAppender.setEncoder(layoutEncoder);
|
|
|
|
|
+ amqpAppender.start();
|
|
|
|
|
+
|
|
|
|
|
+ return amqpAppender;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private Appender<ILoggingEvent> fileAppender() {
|
|
|
|
|
+ PatternLayoutEncoder layoutEncoder = new PatternLayoutEncoder();
|
|
|
|
|
+ layoutEncoder.setPattern("%date %level [%thread] %logger{10} [%file:%line] %msg%n");
|
|
|
|
|
+ layoutEncoder.setContext(loggerContext);
|
|
|
|
|
+ layoutEncoder.start();
|
|
|
|
|
+
|
|
|
|
|
+ FileAppender<ILoggingEvent> fileAppender = new FileAppender<ILoggingEvent>();
|
|
|
|
|
+ fileAppender.setFile("file");
|
|
|
|
|
+ fileAppender.setEncoder(layoutEncoder);
|
|
|
|
|
+ fileAppender.setContext(loggerContext);
|
|
|
|
|
+ fileAppender.start();
|
|
|
|
|
+
|
|
|
|
|
+ return fileAppender;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private Appender<ILoggingEvent> consoleAppender() {
|
|
|
|
|
+ PatternLayoutEncoder layoutEncoder = new PatternLayoutEncoder();
|
|
|
|
|
+ layoutEncoder.setPattern("%d{HH:mm:ss.SSS} [%thread] %-5level %c %M %L - %msg%n");
|
|
|
|
|
+ layoutEncoder.setContext(loggerContext);
|
|
|
|
|
+ layoutEncoder.start();
|
|
|
|
|
+
|
|
|
|
|
+ ConsoleAppender<ILoggingEvent> consoleAppender = new ConsoleAppender<>();
|
|
|
|
|
+ consoleAppender.start();
|
|
|
|
|
+
|
|
|
|
|
+ return consoleAppender;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|