Browse Source

!2 对log4j兼容
Merge pull request !2 from 来庆龙/master

小东 4 years ago
parent
commit
16b667fc93

+ 6 - 0
pom.xml

@@ -58,6 +58,12 @@
             <artifactId>spring-boot-starter-log4j2</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-log4j</artifactId>
+            <version>1.3.8.RELEASE</version>
+            <scope>provided</scope>
+        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-redis</artifactId>

+ 3 - 3
src/main/java/org/ssssssss/magicapi/logging/Log4j2LoggerContext.java

@@ -26,16 +26,16 @@ public class Log4j2LoggerContext implements MagicLoggerContext{
 				.withConfiguration(configuration)
 				.withPattern("%d %t %p %X{TracingMsg} %c - %m%n")
 				.build();
-		MagicLog4jAppender appender = new MagicLog4jAppender("Magic", logger.getFilter(), layout);
+		MagicLog4j2Appender appender = new MagicLog4j2Appender("Magic", logger.getFilter(), layout);
 		appender.start();
 		configuration.addAppender(appender);
 		logger.addAppender(appender,logger.getLevel(),logger.getFilter());
 		context.updateLoggers(configuration);
 	}
 
-	class MagicLog4jAppender extends AbstractAppender{
+	class MagicLog4j2Appender extends AbstractAppender{
 
-		MagicLog4jAppender(String name, Filter filter, Layout<? extends Serializable> layout) {
+		MagicLog4j2Appender(String name, Filter filter, Layout<? extends Serializable> layout) {
 			super(name, filter, layout);
 		}
 

+ 45 - 0
src/main/java/org/ssssssss/magicapi/logging/Log4jLoggerContext.java

@@ -0,0 +1,45 @@
+package org.ssssssss.magicapi.logging;
+
+import org.apache.log4j.AppenderSkeleton;
+import org.apache.log4j.LogManager;
+import org.apache.log4j.PatternLayout;
+import org.apache.log4j.spi.LoggingEvent;
+import org.apache.log4j.spi.RootLogger;
+import org.apache.log4j.spi.ThrowableInformation;
+
+
+public class Log4jLoggerContext implements MagicLoggerContext {
+    @Override
+    public void generateAppender() {
+        RootLogger logger = (RootLogger) LogManager.getRootLogger();
+        PatternLayout patternLayout = new PatternLayout("%d %p [%c] - %m%n");
+        MagicLog4jAppender magicLog4jAppender = new MagicLog4jAppender();
+        magicLog4jAppender.setLayout(patternLayout);
+        logger.addAppender(magicLog4jAppender);
+    }
+     class MagicLog4jAppender  extends AppenderSkeleton{
+
+
+        @Override
+        protected void append(LoggingEvent event) {
+            LogInfo logInfo = new LogInfo();
+            logInfo.setLevel(event.getLevel().toString().toLowerCase());
+            logInfo.setMessage(String.valueOf(event.getMessage()));
+            ThrowableInformation throwableInformation = event.getThrowableInformation();
+            if (throwableInformation != null) {
+                logInfo.setThrowable(throwableInformation.getThrowable());
+            }
+            println(logInfo);
+        }
+
+        @Override
+        public void close() {
+
+        }
+
+        @Override
+        public boolean requiresLayout() {
+            return false;
+        }
+    }
+}

+ 2 - 0
src/main/java/org/ssssssss/magicapi/logging/LoggerManager.java

@@ -16,6 +16,8 @@ public class LoggerManager {
 			magicLoggerContext = new LogbackLoggerContext();
 		}else if("org.apache.logging.slf4j.Log4jLoggerFactory".equalsIgnoreCase(loggerFactoryClassName)){	//log4j2
 			magicLoggerContext = new Log4j2LoggerContext();
+		}else if ("org.slf4j.impl.Log4jLoggerFactory".equalsIgnoreCase(loggerFactoryClassName)) {
+			magicLoggerContext = new Log4jLoggerContext();
 		}
 		if (magicLoggerContext == null) {
 			logger.error("无法识别LoggerContext:{}", loggerFactoryClassName);