diff --git a/pom.xml b/pom.xml index 0f458db..ae3303e 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ jar ColorConsole - 2.3.2 + 2.3.3 2016 https://dev.bukkit.org/bukkit-plugins/colorconsole/ diff --git a/src/main/java/com/github/games647/colorconsole/bukkit/ColorConsoleBukkit.java b/src/main/java/com/github/games647/colorconsole/bukkit/ColorConsoleBukkit.java index d38893d..ffadc98 100644 --- a/src/main/java/com/github/games647/colorconsole/bukkit/ColorConsoleBukkit.java +++ b/src/main/java/com/github/games647/colorconsole/bukkit/ColorConsoleBukkit.java @@ -7,6 +7,7 @@ import java.io.Serializable; import java.util.Map; import java.util.logging.Level; +import org.apache.commons.lang.builder.ReflectionToStringBuilder; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.core.Appender; import org.apache.logging.log4j.core.Layout; @@ -22,8 +23,6 @@ public class ColorConsoleBukkit extends JavaPlugin { @Override public void onLoad() { - saveDefaultConfig(); - Map levelColors = Maps.newHashMap(); levelColors.put("FATAL", getConfig().getString("FATAL")); levelColors.put("ERROR", getConfig().getString("ERROR")); @@ -71,7 +70,8 @@ public class ColorConsoleBukkit extends JavaPlugin { oldLayout = terminalAppender.getLayout(); String logFormat = getConfig().getString("logFormat"); - if (oldLayout.toString().contains("minecraftFormatting")) { + String appenderClass = terminalAppender.getClass().getName(); + if (oldLayout.toString().contains("minecraftFormatting") || appenderClass.contains("minecrell")) { logFormat = logFormat.replace("%msg", "%minecraftFormatting{%msg}"); } diff --git a/src/main/java/com/github/games647/colorconsole/common/ColorAppender.java b/src/main/java/com/github/games647/colorconsole/common/ColorAppender.java index 1c540df..921986d 100644 --- a/src/main/java/com/github/games647/colorconsole/common/ColorAppender.java +++ b/src/main/java/com/github/games647/colorconsole/common/ColorAppender.java @@ -12,8 +12,25 @@ import org.apache.logging.log4j.message.Message; public abstract class ColorAppender extends AbstractAppender { + private static final Method loggerClassGetter; + private boolean disabled = loggerClassGetter == null; + + static { + Method classGetter = null; + for (Method method : LogEvent.class.getDeclaredMethods()) { + String methodName = method.getName(); + if ("getLoggerFqcn".equalsIgnoreCase(methodName) + || "getFQCN".equalsIgnoreCase(methodName)) { + classGetter = method; + method.setAccessible(true); + break; + } + } + + loggerClassGetter = classGetter; + } + private final Appender oldAppender; - private Method loggerClassGetter; protected final CommonFormatter formatter; @@ -24,14 +41,6 @@ public abstract class ColorAppender extends AbstractAppender { this.oldAppender = oldAppender; this.formatter = new CommonFormatter(hideMessages, colorizeTag, truncateColor, levelColors); - for (Method method : LogEvent.class.getDeclaredMethods()) { - String methodName = method.getName(); - if ("getLoggerFqcn".equalsIgnoreCase(methodName) - || "getFQCN".equalsIgnoreCase(methodName)) { - loggerClassGetter = method; - method.setAccessible(true); - } - } } public void initPluginColors(Map configColors, String def) { @@ -56,12 +65,12 @@ public abstract class ColorAppender extends AbstractAppender { protected LogEvent clone(LogEvent oldEvent, String loggerName, Message message) { String className = null; - if (loggerClassGetter != null) { + if (!disabled) { 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; + disabled = true; } } diff --git a/src/main/java/com/github/games647/colorconsole/sponge/ColorConsoleSponge.java b/src/main/java/com/github/games647/colorconsole/sponge/ColorConsoleSponge.java index f39c4ea..9622537 100644 --- a/src/main/java/com/github/games647/colorconsole/sponge/ColorConsoleSponge.java +++ b/src/main/java/com/github/games647/colorconsole/sponge/ColorConsoleSponge.java @@ -26,8 +26,6 @@ import org.spongepowered.api.plugin.Plugin; , url = PomData.URL, description = PomData.DESCRIPTION) public class ColorConsoleSponge { -// private static String TERMINAL_NAME = "FmlConsole"; -// private static String TERMINAL_NAME = "Console"; private static final String TERMINAL_NAME = "MinecraftConsole"; private final Logger logger; @@ -82,7 +80,8 @@ public class ColorConsoleSponge { Layout oldLayout = terminalAppender.getLayout(); String logFormat = configMapper.getInstance().getLogFormat(); - if (oldLayout.toString().contains("%minecraftFormatting")) { + String appenderClass = terminalAppender.getClass().getName(); + if (oldLayout.toString().contains("minecraftFormatting") || appenderClass.contains("minecrell")) { logFormat = logFormat.replace("%msg", "%minecraftFormatting{%msg}"); }