From 7534e13c1ce53c63087a01d0b18f501568dbf46b Mon Sep 17 00:00:00 2001 From: lailailai <954806471@qq.com> Date: Mon, 20 Jul 2020 17:14:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E5=AF=B9log4j=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E7=9A=84=E6=89=93=E5=8D=B0,=E4=BF=AE=E6=94=B9log4j?= =?UTF-8?q?=E5=86=85=E9=83=A8=E7=B1=BB=E7=9A=84=E5=90=8D=E7=A7=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 +++ .../magicapi/logging/Log4j2LoggerContext.java | 6 +-- .../magicapi/logging/Log4jLoggerContext.java | 45 +++++++++++++++++++ .../magicapi/logging/LoggerManager.java | 2 + 4 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 src/main/java/org/ssssssss/magicapi/logging/Log4jLoggerContext.java diff --git a/pom.xml b/pom.xml index b71b7966..776acf17 100644 --- a/pom.xml +++ b/pom.xml @@ -58,6 +58,12 @@ spring-boot-starter-log4j2 provided + + org.springframework.boot + spring-boot-starter-log4j + 1.3.8.RELEASE + provided + org.springframework.boot spring-boot-starter-data-redis diff --git a/src/main/java/org/ssssssss/magicapi/logging/Log4j2LoggerContext.java b/src/main/java/org/ssssssss/magicapi/logging/Log4j2LoggerContext.java index 851ff303..78ec5ec0 100644 --- a/src/main/java/org/ssssssss/magicapi/logging/Log4j2LoggerContext.java +++ b/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 layout) { + MagicLog4j2Appender(String name, Filter filter, Layout layout) { super(name, filter, layout); } diff --git a/src/main/java/org/ssssssss/magicapi/logging/Log4jLoggerContext.java b/src/main/java/org/ssssssss/magicapi/logging/Log4jLoggerContext.java new file mode 100644 index 00000000..b458b10a --- /dev/null +++ b/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; + } + } +} diff --git a/src/main/java/org/ssssssss/magicapi/logging/LoggerManager.java b/src/main/java/org/ssssssss/magicapi/logging/LoggerManager.java index 44a682f0..97bbb7cc 100644 --- a/src/main/java/org/ssssssss/magicapi/logging/LoggerManager.java +++ b/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); -- Gitee