From ca56b2c9bacbab1cbd9f06df0b9a82820f11a135 Mon Sep 17 00:00:00 2001 From: LamGC Date: Tue, 9 Jun 2020 15:35:43 +0800 Subject: [PATCH] =?UTF-8?q?[Change]=20MiraiToSlf4jLogger,=20log4j2.xml,=20?= =?UTF-8?q?log4j2-test.xml,=20MiraiMain=20=E5=B0=86Mirai=E6=A1=86=E6=9E=B6?= =?UTF-8?q?=E7=9A=84=E6=97=A5=E5=BF=97=E6=8E=A5=E5=85=A5Slf4j(Log4j2);=20[?= =?UTF-8?q?Change]=20BotEventHandler=20=E8=B0=83=E6=95=B4=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E4=BD=BF=E7=94=A8;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lamgc/cgj/bot/event/BotEventHandler.java | 7 +- .../cgj/bot/framework/mirai/MiraiMain.java | 9 +- .../framework/mirai/MiraiToSlf4jLogger.java | 84 +++++++++++++++++++ src/main/resources/log4j2-test.xml | 29 +++++-- src/main/resources/log4j2.xml | 48 ++++++++--- 5 files changed, 151 insertions(+), 26 deletions(-) create mode 100644 src/main/java/net/lamgc/cgj/bot/framework/mirai/MiraiToSlf4jLogger.java diff --git a/src/main/java/net/lamgc/cgj/bot/event/BotEventHandler.java b/src/main/java/net/lamgc/cgj/bot/event/BotEventHandler.java index 26a0299..4dc574f 100644 --- a/src/main/java/net/lamgc/cgj/bot/event/BotEventHandler.java +++ b/src/main/java/net/lamgc/cgj/bot/event/BotEventHandler.java @@ -64,14 +64,13 @@ public class BotEventHandler implements EventHandler { */ public synchronized static void initial() { if(initialled) { - Logger logger = LoggerFactory.getLogger("BotEventHandler@"); - logger.warn("BotEventHandler已经执行过初始化方法, 可能存在多次执行的问题, 堆栈信息: \n {}", + log.warn("BotEventHandler已经执行过初始化方法, 可能存在多次执行的问题, 堆栈信息: \n {}", Throwables.getStackTraceAsString(new Exception())); return; } executor.setEventUncaughtExceptionHandler(new EventUncaughtExceptionHandler() { - private final Logger log = LoggerFactory.getLogger("EventUncaughtExceptionHandler"); + private final Logger log = LoggerFactory.getLogger(this.getClass()); @Override public void exceptionHandler(Thread executeThread, EventHandler handler, Method handlerMethod, EventObject event, Throwable cause) { log.error("发生未捕获异常:\nThread:{}, EventHandler: {}, HandlerMethod: {}, EventObject: {}\n{}", @@ -88,7 +87,7 @@ public class BotEventHandler implements EventHandler { shutdownThread.setName("Thread-EventHandlerShutdown"); Runtime.getRuntime().addShutdownHook(shutdownThread); } catch (IllegalAccessException e) { - LoggerFactory.getLogger("BotEventHandler@Static").error("添加Handler时发生异常", e); + log.error("添加Handler时发生异常", e); } try { diff --git a/src/main/java/net/lamgc/cgj/bot/framework/mirai/MiraiMain.java b/src/main/java/net/lamgc/cgj/bot/framework/mirai/MiraiMain.java index f673533..d681340 100644 --- a/src/main/java/net/lamgc/cgj/bot/framework/mirai/MiraiMain.java +++ b/src/main/java/net/lamgc/cgj/bot/framework/mirai/MiraiMain.java @@ -4,15 +4,19 @@ import net.lamgc.cgj.bot.boot.ApplicationBoot; import net.lamgc.cgj.bot.boot.BotGlobal; import net.lamgc.cgj.bot.event.BotEventHandler; import net.lamgc.cgj.bot.framework.mirai.message.MiraiMessageEvent; -import net.lamgc.cgj.bot.message.MessageSenderBuilder; import net.lamgc.cgj.bot.framework.mirai.message.MiraiMessageSenderFactory; +import net.lamgc.cgj.bot.message.MessageSenderBuilder; import net.mamoe.mirai.Bot; import net.mamoe.mirai.BotFactoryJvm; import net.mamoe.mirai.event.events.BotMuteEvent; import net.mamoe.mirai.event.events.BotUnmuteEvent; import net.mamoe.mirai.japt.Events; -import net.mamoe.mirai.message.*; +import net.mamoe.mirai.message.FriendMessageEvent; +import net.mamoe.mirai.message.GroupMessageEvent; +import net.mamoe.mirai.message.MessageEvent; +import net.mamoe.mirai.message.TempMessageEvent; import net.mamoe.mirai.utils.BotConfiguration; +import net.mamoe.mirai.utils.Utils; import org.apache.commons.net.util.Base64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,6 +49,7 @@ public class MiraiMain implements Closeable { return; } + Utils.setDefaultLogger(MiraiToSlf4jLogger::new); BotConfiguration configuration = new BotConfiguration(); configuration.setProtocol(BotConfiguration.MiraiProtocol.ANDROID_PAD); bot = BotFactoryJvm.newBot(Long.parseLong(botProperties.getProperty("bot.qq", "0")), Base64.decodeBase64(botProperties.getProperty("bot.password", "")), configuration); diff --git a/src/main/java/net/lamgc/cgj/bot/framework/mirai/MiraiToSlf4jLogger.java b/src/main/java/net/lamgc/cgj/bot/framework/mirai/MiraiToSlf4jLogger.java new file mode 100644 index 0000000..dc81def --- /dev/null +++ b/src/main/java/net/lamgc/cgj/bot/framework/mirai/MiraiToSlf4jLogger.java @@ -0,0 +1,84 @@ +package net.lamgc.cgj.bot.framework.mirai; + +import net.mamoe.mirai.utils.MiraiLogger; +import net.mamoe.mirai.utils.MiraiLoggerPlatformBase; +import org.jetbrains.annotations.Nullable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.slf4j.Marker; +import org.slf4j.MarkerFactory; + +public class MiraiToSlf4jLogger extends MiraiLoggerPlatformBase { + + private final static Marker marker = MarkerFactory.getMarker("mirai"); + + private final Logger logger; + + private final String identity; + + public MiraiToSlf4jLogger(String identity) { + this.identity = identity; + this.logger = LoggerFactory.getLogger("mirai." + identity); + } + + @Override + protected void debug0(@Nullable String s) { + logger.debug(marker, s); + } + + @Override + protected void debug0(@Nullable String s, @Nullable Throwable throwable) { + logger.debug(marker, s, throwable); + } + + @Override + protected void error0(@Nullable String s) { + logger.error(marker, s); + } + + @Override + protected void error0(@Nullable String s, @Nullable Throwable throwable) { + logger.error(marker, s, throwable); + } + + @Override + protected void info0(@Nullable String s) { + logger.info(marker, s); + } + + @Override + protected void info0(@Nullable String s, @Nullable Throwable throwable) { + logger.info(marker, s, throwable); + } + + @Override + protected void verbose0(@Nullable String s) { + logger.trace(marker, s); + } + + @Override + protected void verbose0(@Nullable String s, @Nullable Throwable throwable) { + logger.trace(marker, s, throwable); + } + + @Override + protected void warning0(@Nullable String s) { + logger.warn(marker, s); + } + + @Override + protected void warning0(@Nullable String s, @Nullable Throwable throwable) { + logger.warn(marker, s, throwable); + } + + @Nullable + @Override + public String getIdentity() { + if(identity == null) { + MiraiLogger followerLogger = getFollower(); + return followerLogger == null ? null : followerLogger.getIdentity(); + } else { + return identity; + } + } +} diff --git a/src/main/resources/log4j2-test.xml b/src/main/resources/log4j2-test.xml index a90cd78..8e34dbf 100644 --- a/src/main/resources/log4j2-test.xml +++ b/src/main/resources/log4j2-test.xml @@ -3,26 +3,39 @@ ./logs UTF-8 - [%-d{HH:mm:ss.SSS} %5level][%logger.%method():%-3L][%thread]: %msg%n + [%-d{HH:mm:ss.SSS} %5level][%logger.%method():%-3L][%thread]: %msg%n + [%-d{HH:mm:ss.SSS} %5level][%logger]: %msg%n ${sys:cgj.logsPath:-logs} - - + + + + + + - - + + + + + + - + + + + + @@ -32,8 +45,8 @@ - - + + diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml index 22d7cbb..155b02b 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -1,29 +1,44 @@ + ./logs UTF-8 - [%-d{HH:mm:ss.SSS} %5level][%logger.%method():%-3L][%thread]: %msg%n + [%-d{HH:mm:ss.SSS} %5level][%logger.%method():%-3L][%thread]: %msg%n + [%-d{HH:mm:ss.SSS} %5level][%logger]: %msg%n ${sys:cgj.logsPath:-logs} - - + + + + + + - - + - - + + + + + + - + + + + + @@ -31,10 +46,19 @@ - - - - + + + + + + + + + + + + +