Archived
0

Bridge: успешная отправка логов на MCSM

This commit is contained in:
2017-05-18 01:11:51 +03:00
parent 305fc3d6b2
commit 2070a5eb63
8 changed files with 110 additions and 13 deletions

View File

@@ -1,5 +1,5 @@
group = 'asys'
version = '0.5.1-SNAPSHOT'
version = '0.5.2-SNAPSHOT'
repositories {
maven { url 'https://hub.spigotmc.org/nexus/content/groups/public/' }
@@ -40,5 +40,5 @@ dependencies {
exclude group: 'org.avaje'
}
compile group: 'io.netty', name: 'netty-codec', version: nettyVersion
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.5'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.0-rc1'
}

View File

@@ -1,13 +1,16 @@
/*
* DmitriyMX <d.mihailov@samson-rus.com>
* DmitriyMX <dimon550@gmail.com>
* 2017-05-17
*/
package asys.bridge.bukkit;
import asys.mcsmanager.packets.CS_ConsoleMessage;
import io.netty.channel.Channel;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.appender.AbstractAppender;
public class BridgeLoggerAppender extends AbstractAppender {
private Channel channel;
BridgeLoggerAppender() {
super("ASysBridge", null, null);
@@ -16,6 +19,24 @@ public class BridgeLoggerAppender extends AbstractAppender {
@Override
public void append(LogEvent event) {
System.out.println("+++ "+event.getMessage().getFormattedMessage());
if (channel == null) return;
long timeMillis = event.getMillis();
int intLevel = event.getLevel().intLevel();
String loggerName = event.getLoggerName();
String message = event.getMessage().getFormattedMessage();
CS_ConsoleMessage messagePkg = new CS_ConsoleMessage(
timeMillis,
intLevel,
loggerName,
message
);
channel.writeAndFlush(messagePkg);
}
void setChannel(Channel channel) {
this.channel = channel;
}
}

View File

@@ -24,18 +24,22 @@ public class BridgePlugin extends JavaPlugin {
private ScheduledExecutorService ses;
private ScheduledFuture<?> sesFuture, sesPingFuture;
private int tryConnect = 0;
private BridgeLoggerAppender loggerAppender;
@Override
public void onLoad() {
((Logger)LogManager.getRootLogger()).addAppender(new BridgeLoggerAppender());
((Logger)LogManager.getRootLogger()).addAppender(loggerAppender = new BridgeLoggerAppender());
onEnable();
}
@Override
public void onEnable() {
INSTANCE = this;
saveDefaultConfig();
if (INSTANCE == null) {
INSTANCE = this;
saveDefaultConfig();
startReconnect();
startReconnect();
}
}
@Override
@@ -84,6 +88,7 @@ public class BridgePlugin extends JavaPlugin {
}
public void startPing(Channel channel) {
getLoggerAppender().setChannel(channel);
sesPingFuture = ses.scheduleAtFixedRate(() -> {
channel.write(new CS_Ping(
System.currentTimeMillis(),
@@ -104,8 +109,13 @@ public class BridgePlugin extends JavaPlugin {
}
public void stopPing() {
getLoggerAppender().setChannel(null);
if (sesPingFuture != null) {
sesPingFuture.cancel(false);
}
}
public BridgeLoggerAppender getLoggerAppender() {
return loggerAppender;
}
}

View File

@@ -25,7 +25,8 @@ public class ClientPacketHandler extends ChannelInboundHandlerAdapter implements
private static Map<Class<? extends Packet>, IPacketHandler> handshakeHandlers;
private static final BiMap<Integer, Class<? extends Packet>> pingPackets = ImmutableBiMap.of(
3, CS_Ping.class
3, CS_Ping.class,
4, CS_ConsoleMessage.class
);
ClientPacketHandler() {