Server Log Events (#996)

* Server Log Event

* LogEventAppender Encoder
This commit is contained in:
4Benj_ 2022-05-20 20:48:20 +08:00 committed by GitHub
parent 9125bacfce
commit 92f1a93ba2
3 changed files with 59 additions and 0 deletions

View File

@ -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;
}
}

View File

@ -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<E> extends AppenderBase<E> {
protected Encoder<E> 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<E> getEncoder() {
return encoder;
}
public void setEncoder(Encoder<E> encoder) {
this.encoder = encoder;
}
}

View File

@ -16,6 +16,11 @@
<pattern>%d{yyyy-MM-dd'T'HH:mm:ss'Z'} &lt;%level:%class&gt; %m%n</pattern>
</encoder>
</appender>
<appender name="SERVEREVENT" class="emu.grasscutter.utils.ServerLogEventAppender">
<encoder>
<pattern>%d{HH:mm:ss} &lt;%highlight(%level):%gray(%class{0})&gt; %msg%n</pattern>
</encoder>
</appender>
<logger name="org.reflections" level="OFF" />
<logger name="emu.grasscutter" level="${LOG_LEVEL}" />
@ -23,5 +28,6 @@
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
<appender-ref ref="SERVEREVENT" />
</root>
</Configuration>