mirror of
https://github.com/games647/ColorConsole.git
synced 2025-02-18 21:11:20 +01:00
Add 1.12 support
This commit is contained in:
parent
93b5fd1c59
commit
a0d80b9ab4
4
pom.xml
4
pom.xml
@ -131,7 +131,9 @@
|
||||
<dependency>
|
||||
<groupId>org.apache.logging.log4j</groupId>
|
||||
<artifactId>log4j-core</artifactId>
|
||||
<version>2.0-beta9</version>
|
||||
<!--Minecraft 1.12 uses 2.1 and earlier versions 2.0-beta9-->
|
||||
<version>2.1</version>
|
||||
<!--<version>2.0-beta9</version>-->
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
@ -1,10 +1,9 @@
|
||||
package com.github.games647.colorconsole.bukkit;
|
||||
|
||||
import com.github.games647.colorconsole.common.CommonLogInstaller;
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.lang.reflect.Field;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
|
||||
@ -12,14 +11,13 @@ import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.core.Appender;
|
||||
import org.apache.logging.log4j.core.Layout;
|
||||
import org.apache.logging.log4j.core.Logger;
|
||||
import org.apache.logging.log4j.core.LoggerContext;
|
||||
import org.apache.logging.log4j.core.config.Configuration;
|
||||
import org.apache.logging.log4j.core.config.DefaultConfiguration;
|
||||
import org.apache.logging.log4j.core.layout.PatternLayout;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public class ColorConsoleBukkit extends JavaPlugin {
|
||||
|
||||
private static String TERMINAL_NAME = "TerminalConsole";
|
||||
|
||||
private Layout<? extends Serializable> oldLayout;
|
||||
|
||||
@Override
|
||||
@ -38,7 +36,7 @@ public class ColorConsoleBukkit extends JavaPlugin {
|
||||
@Override
|
||||
public void onDisable() {
|
||||
//restore the old format
|
||||
Appender terminalAppender = getTerminalAppender();
|
||||
Appender terminalAppender = CommonLogInstaller.getTerminalAppender(TERMINAL_NAME);
|
||||
Logger rootLogger = ((Logger) LogManager.getRootLogger());
|
||||
|
||||
ColorPluginAppender colorPluginAppender = null;
|
||||
@ -54,11 +52,15 @@ public class ColorConsoleBukkit extends JavaPlugin {
|
||||
rootLogger.addAppender(colorPluginAppender.getOldAppender());
|
||||
}
|
||||
|
||||
setLayout(oldLayout);
|
||||
try {
|
||||
CommonLogInstaller.setLayout(oldLayout, terminalAppender);
|
||||
} catch (ReflectiveOperationException ex) {
|
||||
getLogger().log(Level.WARNING, "Cannot revert log format", ex);
|
||||
}
|
||||
}
|
||||
|
||||
private void installLogFormat() {
|
||||
Appender terminalAppender = getTerminalAppender();
|
||||
Appender terminalAppender = CommonLogInstaller.getTerminalAppender(TERMINAL_NAME);
|
||||
|
||||
oldLayout = terminalAppender.getLayout();
|
||||
String logFormat = getConfig().getString("logFormat");
|
||||
@ -75,9 +77,13 @@ public class ColorConsoleBukkit extends JavaPlugin {
|
||||
String dateStyle = getConfig().getString("dateStyle");
|
||||
logFormat = logFormat.replaceFirst("(%d)\\{.{1,}\\}", "%style{$0}{" + dateStyle + "}");
|
||||
|
||||
PatternLayout layout = PatternLayout
|
||||
.createLayout(logFormat, new DefaultConfiguration(), null, Charset.defaultCharset().name(), "true");
|
||||
setLayout(layout);
|
||||
try {
|
||||
PatternLayout layout = CommonLogInstaller.createLayout(logFormat);
|
||||
CommonLogInstaller.setLayout(layout, terminalAppender);
|
||||
} catch (ReflectiveOperationException ex) {
|
||||
getLogger().log(Level.WARNING, "Cannot install log format", ex);
|
||||
}
|
||||
|
||||
|
||||
if (getConfig().getBoolean("colorPluginTag")) {
|
||||
Logger rootLogger = ((Logger) LogManager.getRootLogger());
|
||||
@ -99,23 +105,4 @@ public class ColorConsoleBukkit extends JavaPlugin {
|
||||
rootLogger.addAppender(pluginAppender);
|
||||
}
|
||||
}
|
||||
|
||||
private void setLayout(Layout<? extends Serializable> layout) {
|
||||
Appender terminalAppender = getTerminalAppender();
|
||||
|
||||
try {
|
||||
Field field = terminalAppender.getClass().getSuperclass().getDeclaredField("layout");
|
||||
field.setAccessible(true);
|
||||
field.set(terminalAppender, layout);
|
||||
} catch (Exception ex) {
|
||||
getLogger().log(Level.SEVERE, "Failed to install log format", ex);
|
||||
}
|
||||
}
|
||||
|
||||
private Appender getTerminalAppender() {
|
||||
LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
|
||||
Configuration conf = ctx.getConfiguration();
|
||||
|
||||
return conf.getAppenders().get("TerminalConsole");
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.github.games647.colorconsole.common;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
|
||||
@ -12,6 +13,7 @@ import org.apache.logging.log4j.message.Message;
|
||||
public abstract class ColorAppender extends AbstractAppender {
|
||||
|
||||
private final Appender oldAppender;
|
||||
private Method loggerClassGetter;
|
||||
|
||||
protected final CommonFormatter formatter;
|
||||
|
||||
@ -20,6 +22,15 @@ public abstract class ColorAppender extends AbstractAppender {
|
||||
|
||||
this.oldAppender = oldAppender;
|
||||
this.formatter = new CommonFormatter(hideMessages, colorizeTag);
|
||||
|
||||
for (Method method : LogEvent.class.getDeclaredMethods()) {
|
||||
String methodName = method.getName();
|
||||
if (methodName.equalsIgnoreCase("getLoggerFqcn")
|
||||
|| methodName.equalsIgnoreCase("getFQCN")) {
|
||||
loggerClassGetter = method;
|
||||
method.setAccessible(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void initPluginColors(Map<String, String> configColors, String def) {
|
||||
@ -43,10 +54,18 @@ public abstract class ColorAppender extends AbstractAppender {
|
||||
protected abstract Collection<String> loadPluginNames();
|
||||
|
||||
protected LogEvent clone(LogEvent oldEvent, String loggerName, Message message) {
|
||||
return new Log4jLogEvent(loggerName, oldEvent.getMarker(), oldEvent.getFQCN()
|
||||
, oldEvent.getLevel(), message, oldEvent.getThrown()
|
||||
, oldEvent.getContextMap(), oldEvent.getContextStack()
|
||||
, oldEvent.getThreadName(), oldEvent.getSource(), oldEvent.getMillis());
|
||||
String className = null;
|
||||
if (loggerClassGetter != null) {
|
||||
try {
|
||||
className = (String) loggerClassGetter.invoke(oldEvent);
|
||||
} catch (ReflectiveOperationException refEx) {
|
||||
//if this method cannot be found then the other methods wouldn't work neither
|
||||
loggerClassGetter = null;
|
||||
}
|
||||
}
|
||||
|
||||
return new Log4jLogEvent(loggerName, oldEvent.getMarker(), className
|
||||
, oldEvent.getLevel(), message, oldEvent.getThrown());
|
||||
}
|
||||
|
||||
public Appender getOldAppender() {
|
||||
|
@ -1,7 +1,11 @@
|
||||
package com.github.games647.colorconsole.sponge;
|
||||
|
||||
import com.github.games647.colorconsole.common.CommonLogInstaller;
|
||||
import com.google.inject.Inject;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Path;
|
||||
|
||||
import ninja.leaping.configurate.commented.CommentedConfigurationNode;
|
||||
import ninja.leaping.configurate.hocon.HoconConfigurationLoader;
|
||||
import ninja.leaping.configurate.loader.ConfigurationLoader;
|
||||
@ -10,10 +14,6 @@ import ninja.leaping.configurate.objectmapping.ObjectMappingException;
|
||||
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.core.Appender;
|
||||
import org.apache.logging.log4j.core.Layout;
|
||||
import org.apache.logging.log4j.core.LoggerContext;
|
||||
import org.apache.logging.log4j.core.config.Configuration;
|
||||
import org.apache.logging.log4j.core.config.DefaultConfiguration;
|
||||
import org.apache.logging.log4j.core.layout.PatternLayout;
|
||||
import org.slf4j.Logger;
|
||||
import org.spongepowered.api.config.DefaultConfig;
|
||||
@ -21,17 +21,13 @@ import org.spongepowered.api.event.Listener;
|
||||
import org.spongepowered.api.event.game.state.GamePreInitializationEvent;
|
||||
import org.spongepowered.api.plugin.Plugin;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Serializable;
|
||||
import java.lang.reflect.Field;
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.file.Path;
|
||||
|
||||
@Plugin(id = "colorconsole", name = "ColorConsole", version = "1.9"
|
||||
, url = "https://github.com/games647/ColorConsole/"
|
||||
, description = "Print colorful console messages depending on the logging level")
|
||||
public class ColorConsoleSponge {
|
||||
|
||||
private static String TERMINAL_NAME = "FmlConsole";
|
||||
|
||||
private final Logger logger;
|
||||
|
||||
@Inject
|
||||
@ -81,7 +77,7 @@ public class ColorConsoleSponge {
|
||||
}
|
||||
|
||||
private void installLogFormat() {
|
||||
Appender terminalAppender = getTerminalAppender();
|
||||
Appender terminalAppender = CommonLogInstaller.getTerminalAppender(TERMINAL_NAME);
|
||||
|
||||
String logFormat = configMapper.getInstance().getLogFormat();
|
||||
if (configMapper.getInstance().isColorLoggingLevel()) {
|
||||
@ -97,9 +93,12 @@ public class ColorConsoleSponge {
|
||||
String dateStyle = configMapper.getInstance().getDateStyle();
|
||||
logFormat = logFormat.replaceFirst("(%d)\\{.{1,}\\}", "%style{$0}{" + dateStyle + "}");
|
||||
|
||||
PatternLayout layout = PatternLayout
|
||||
.createLayout(logFormat, new DefaultConfiguration(), null, Charset.defaultCharset().name(), "true");
|
||||
setLayout(layout);
|
||||
try {
|
||||
PatternLayout layout = CommonLogInstaller.createLayout(logFormat);
|
||||
CommonLogInstaller.setLayout(layout, terminalAppender);
|
||||
} catch (ReflectiveOperationException ex) {
|
||||
logger.warn("Cannot install log format", ex);
|
||||
}
|
||||
|
||||
if (configMapper.getInstance().isColorPluginTag()) {
|
||||
org.apache.logging.log4j.core.Logger rootLogger = ((org.apache.logging.log4j.core.Logger) LogManager
|
||||
@ -113,23 +112,4 @@ public class ColorConsoleSponge {
|
||||
rootLogger.addAppender(pluginAppender);
|
||||
}
|
||||
}
|
||||
|
||||
private void setLayout(Layout<? extends Serializable> layout) {
|
||||
Appender terminalAppender = getTerminalAppender();
|
||||
|
||||
try {
|
||||
Field field = terminalAppender.getClass().getSuperclass().getDeclaredField("layout");
|
||||
field.setAccessible(true);
|
||||
field.set(terminalAppender, layout);
|
||||
} catch (Exception ex) {
|
||||
logger.error("Failed to install log format", ex);
|
||||
}
|
||||
}
|
||||
|
||||
private Appender getTerminalAppender() {
|
||||
LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
|
||||
Configuration conf = ctx.getConfiguration();
|
||||
|
||||
return conf.getAppenders().get("FmlConsole");
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user