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 extends Serializable> 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}");
}