From 92f1a93ba2c58d9b102ddb07690a9825669104de Mon Sep 17 00:00:00 2001 From: 4Benj_ <5093878+4Benj@users.noreply.github.com> Date: Fri, 20 May 2022 20:48:20 +0800 Subject: [PATCH] Server Log Events (#996) * Server Log Event * LogEventAppender Encoder --- .../server/event/internal/ServerLogEvent.java | 22 +++++++++++++ .../utils/ServerLogEventAppender.java | 31 +++++++++++++++++++ src/main/resources/logback.xml | 6 ++++ 3 files changed, 59 insertions(+) create mode 100644 src/main/java/emu/grasscutter/server/event/internal/ServerLogEvent.java create mode 100644 src/main/java/emu/grasscutter/utils/ServerLogEventAppender.java diff --git a/src/main/java/emu/grasscutter/server/event/internal/ServerLogEvent.java b/src/main/java/emu/grasscutter/server/event/internal/ServerLogEvent.java new file mode 100644 index 000000000..5903d4021 --- /dev/null +++ b/src/main/java/emu/grasscutter/server/event/internal/ServerLogEvent.java @@ -0,0 +1,22 @@ +package emu.grasscutter.server.event.internal; + +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.core.AppenderBase; +import emu.grasscutter.server.event.types.ServerEvent; + +public class ServerLogEvent extends ServerEvent { + ILoggingEvent loggingEvent; + String consoleMessage; + + public ServerLogEvent(Type type, ILoggingEvent loggingEvent, String consoleMessage) { + super(type); + this.loggingEvent = loggingEvent; + this.consoleMessage = consoleMessage; + } + + public ILoggingEvent getLoggingEvent() { return loggingEvent; } + + public String getConsoleMessage() { + return consoleMessage; + } +} diff --git a/src/main/java/emu/grasscutter/utils/ServerLogEventAppender.java b/src/main/java/emu/grasscutter/utils/ServerLogEventAppender.java new file mode 100644 index 000000000..a64ecd5ad --- /dev/null +++ b/src/main/java/emu/grasscutter/utils/ServerLogEventAppender.java @@ -0,0 +1,31 @@ +package emu.grasscutter.utils; + +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.core.AppenderBase; +import ch.qos.logback.core.encoder.Encoder; +import ch.qos.logback.core.spi.DeferredProcessingAware; +import ch.qos.logback.core.status.ErrorStatus; +import emu.grasscutter.server.event.internal.ServerLogEvent; +import emu.grasscutter.server.event.types.ServerEvent; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; + +public class ServerLogEventAppender extends AppenderBase { + protected Encoder encoder; + + @Override + protected void append(E event) { + byte[] byteArray = this.encoder.encode(event); + ServerLogEvent sle = new ServerLogEvent(ServerEvent.Type.GAME, (ILoggingEvent) event, new String(byteArray, StandardCharsets.UTF_8)); + sle.call(); + } + + public Encoder getEncoder() { + return encoder; + } + + public void setEncoder(Encoder encoder) { + this.encoder = encoder; + } +} diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index 82ec85ccd..e3fa8a9dd 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -16,6 +16,11 @@ %d{yyyy-MM-dd'T'HH:mm:ss'Z'} <%level:%class> %m%n + + + %d{HH:mm:ss} <%highlight(%level):%gray(%class{0})> %msg%n + + @@ -23,5 +28,6 @@ +