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 534e70c..be462f5 100644 --- a/src/main/java/com/github/games647/colorconsole/bukkit/ColorConsoleBukkit.java +++ b/src/main/java/com/github/games647/colorconsole/bukkit/ColorConsoleBukkit.java @@ -24,8 +24,15 @@ public class ColorConsoleBukkit extends JavaPlugin { public void onLoad() { saveDefaultConfig(); + Map levelColors = Maps.newHashMap(); + levelColors.put("FATAL", getConfig().getString("FATAL")); + levelColors.put("ERROR", getConfig().getString("ERROR")); + levelColors.put("WARN", getConfig().getString("WARN")); + levelColors.put("DEBUG", getConfig().getString("DEBUG")); + levelColors.put("TRACE", getConfig().getString("TRACE")); + //try to run it as early as possible - installLogFormat(); + installLogFormat(levelColors); } @Override @@ -59,7 +66,7 @@ public class ColorConsoleBukkit extends JavaPlugin { } } - private void installLogFormat() { + private void installLogFormat(Map levelColors) { Appender terminalAppender = CommonLogInstaller.getTerminalAppender(TERMINAL_NAME); oldLayout = terminalAppender.getLayout(); @@ -84,7 +91,7 @@ public class ColorConsoleBukkit extends JavaPlugin { getLogger().log(Level.WARNING, "Cannot install log format", ex); } - ColorPluginAppender pluginAppender = new ColorPluginAppender(terminalAppender, getConfig()); + ColorPluginAppender pluginAppender = new ColorPluginAppender(terminalAppender, getConfig(), levelColors); Map colors = Maps.newHashMap(); for (Map.Entry entry : getConfig().getValues(false).entrySet()) { if (!entry.getKey().startsWith("P-")) { diff --git a/src/main/java/com/github/games647/colorconsole/bukkit/ColorPluginAppender.java b/src/main/java/com/github/games647/colorconsole/bukkit/ColorPluginAppender.java index ae906ef..4dc742c 100644 --- a/src/main/java/com/github/games647/colorconsole/bukkit/ColorPluginAppender.java +++ b/src/main/java/com/github/games647/colorconsole/bukkit/ColorPluginAppender.java @@ -3,6 +3,8 @@ package com.github.games647.colorconsole.bukkit; import com.github.games647.colorconsole.common.ColorAppender; import java.util.Collection; +import java.util.Collections; +import java.util.Map; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -15,17 +17,18 @@ import org.bukkit.configuration.file.FileConfiguration; public class ColorPluginAppender extends ColorAppender { - public ColorPluginAppender(Appender oldAppender, FileConfiguration config) { + public ColorPluginAppender(Appender oldAppender, FileConfiguration config, Map levelColors) { super(oldAppender , config.getStringList("hide-messages") , config.getBoolean("colorPluginTag") - , config.getBoolean("truncateColor")); + , config.getBoolean("truncateColor") + , config.getBoolean("colorMessage") ? levelColors : Collections.emptyMap()); } @Override public LogEvent onAppend(LogEvent logEvent) { String oldMessage = logEvent.getMessage().getFormattedMessage(); - Message newMessage = new SimpleMessage(formatter.colorizePluginTag(oldMessage)); + Message newMessage = new SimpleMessage(formatter.colorizePluginTag(oldMessage, logEvent.getLevel().name())); return clone(logEvent, logEvent.getLoggerName(), newMessage); } diff --git a/src/main/java/com/github/games647/colorconsole/bungee/ColorLogFormatter.java b/src/main/java/com/github/games647/colorconsole/bungee/ColorLogFormatter.java index d61d9b5..788d03d 100644 --- a/src/main/java/com/github/games647/colorconsole/bungee/ColorLogFormatter.java +++ b/src/main/java/com/github/games647/colorconsole/bungee/ColorLogFormatter.java @@ -1,6 +1,7 @@ package com.github.games647.colorconsole.bungee; import com.github.games647.colorconsole.common.CommonFormatter; +import com.google.common.collect.Maps; import java.io.PrintWriter; import java.io.StringWriter; @@ -33,7 +34,17 @@ public class ColorLogFormatter extends Formatter { List ignoreMessages = plugin.getConfiguration().getStringList("hide-messages"); boolean colorizeTag = plugin.getConfiguration().getBoolean("colorPluginTag"); boolean truncateColor = plugin.getConfiguration().getBoolean("truncateColor", false); - this.formatter = new CommonFormatter(ignoreMessages, colorizeTag, truncateColor); + + Map levelColors = Maps.newHashMap(); + if (plugin.getConfiguration().getBoolean("colorMessage", false)) { + levelColors.put("FATAL", plugin.getConfiguration().getString("FATAL")); + levelColors.put("ERROR", plugin.getConfiguration().getString("ERROR")); + levelColors.put("WARN", plugin.getConfiguration().getString("WARN")); + levelColors.put("DEBUG", plugin.getConfiguration().getString("DEBUG")); + levelColors.put("TRACE", plugin.getConfiguration().getString("TRACE")); + } + + this.formatter = new CommonFormatter(ignoreMessages, colorizeTag, truncateColor, levelColors); } @Override @@ -60,7 +71,7 @@ public class ColorLogFormatter extends Formatter { formatted.append(formatter.getReset()); - formatted.append(formatter.colorizePluginTag(message)); + formatted.append(formatter.colorizePluginTag(message, translateToLog4JName(record.getLevel()))); formatted.append('\n'); if (record.getThrown() != null) { 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 815d3ee..62255e8 100644 --- a/src/main/java/com/github/games647/colorconsole/common/ColorAppender.java +++ b/src/main/java/com/github/games647/colorconsole/common/ColorAppender.java @@ -18,11 +18,11 @@ public abstract class ColorAppender extends AbstractAppender { protected final CommonFormatter formatter; protected ColorAppender(Appender oldAppender, Collection hideMessages - , boolean colorizeTag, boolean truncateColor) { + , boolean colorizeTag, boolean truncateColor, Map levelColors) { super(oldAppender.getName(), null, oldAppender.getLayout()); this.oldAppender = oldAppender; - this.formatter = new CommonFormatter(hideMessages, colorizeTag, truncateColor); + this.formatter = new CommonFormatter(hideMessages, colorizeTag, truncateColor, levelColors); for (Method method : LogEvent.class.getDeclaredMethods()) { String methodName = method.getName(); diff --git a/src/main/java/com/github/games647/colorconsole/common/CommonFormatter.java b/src/main/java/com/github/games647/colorconsole/common/CommonFormatter.java index 410058a..8024d19 100644 --- a/src/main/java/com/github/games647/colorconsole/common/CommonFormatter.java +++ b/src/main/java/com/github/games647/colorconsole/common/CommonFormatter.java @@ -1,6 +1,7 @@ package com.github.games647.colorconsole.common; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableMap.Builder; import com.google.common.collect.ImmutableSet; import java.util.Arrays; @@ -25,11 +26,25 @@ public class CommonFormatter { private final boolean colorizeTag; private final boolean truncateColor; private Map pluginColors; + private Map levelColors; - public CommonFormatter(Collection ignoreMessages, boolean colorizeTag, boolean truncateColor) { + public CommonFormatter(Collection ignoreMessages, boolean colorizeTag, boolean truncateColor + , Map levelColors) { this.ignoreMessages = ImmutableSet.copyOf(ignoreMessages); + this.colorizeTag = colorizeTag; this.truncateColor = truncateColor; + + Builder builder = ImmutableMap.builder(); + for (Map.Entry entry : levelColors.entrySet()) { + if (entry.getKey().equals("INFO")) { + continue; + } + + builder.put(entry.getKey(), format(entry.getValue())); + } + + this.levelColors = builder.build(); } public boolean shouldIgnore(String message) { @@ -62,9 +77,9 @@ public class CommonFormatter { this.pluginColors = colorBuilder.build(); } - public String colorizePluginTag(String message) { + public String colorizePluginTag(String message, String level) { if (!message.contains("[") || !message.contains("]")) { - return message; + return levelColors.getOrDefault(level, "") + message + reset; } String newMessage = message; @@ -83,7 +98,8 @@ public class CommonFormatter { int endTag = newMessage.indexOf(']', startTag); String pluginName = colorizePluginName(newMessage.substring(startTag, endTag)); - return '[' + pluginName + ']' + startingColorCode + newMessage.substring(endTag + 1); + return '[' + pluginName + ']' + startingColorCode + + levelColors.getOrDefault(level, "") + newMessage.substring(endTag + 1) + reset; } public String colorizePluginName(String pluginName) { @@ -95,8 +111,8 @@ public class CommonFormatter { return pluginColor + pluginName + reset; } - public String format(String pluginFormat) { - String[] formatParts = pluginFormat.split(" "); + public String format(String keyCode) { + String[] formatParts = keyCode.split(" "); Ansi ansi = Ansi.ansi(); for (String format : formatParts) { for (Code ansiCode : Code.values()) { diff --git a/src/main/java/com/github/games647/colorconsole/sponge/ColorConsoleConfig.java b/src/main/java/com/github/games647/colorconsole/sponge/ColorConsoleConfig.java index 0136e27..69e5dab 100644 --- a/src/main/java/com/github/games647/colorconsole/sponge/ColorConsoleConfig.java +++ b/src/main/java/com/github/games647/colorconsole/sponge/ColorConsoleConfig.java @@ -68,6 +68,11 @@ public class ColorConsoleConfig { @Setting(comment = "Removes color formatting if the complete message has color formatting") private boolean truncateColor; + @Setting(comment = "Should the complete logging message be colored in the same style as the logging level " + + "(like ColorConsole v1).\n" + + "If not it's using the default color (like ColorConsole v2+)") + private boolean colorMessage; + public boolean isColorPluginTag() { return colorPluginTag; } @@ -103,4 +108,8 @@ public class ColorConsoleConfig { public boolean isTruncateColor() { return truncateColor; } + + public boolean isColorMessage() { + return colorMessage; + } } diff --git a/src/main/java/com/github/games647/colorconsole/sponge/ColorPluginAppender.java b/src/main/java/com/github/games647/colorconsole/sponge/ColorPluginAppender.java index a31523c..f2c9d83 100644 --- a/src/main/java/com/github/games647/colorconsole/sponge/ColorPluginAppender.java +++ b/src/main/java/com/github/games647/colorconsole/sponge/ColorPluginAppender.java @@ -3,6 +3,7 @@ package com.github.games647.colorconsole.sponge; import com.github.games647.colorconsole.common.ColorAppender; import java.util.Collection; +import java.util.Collections; import java.util.stream.Collectors; import org.apache.logging.log4j.core.Appender; @@ -12,7 +13,8 @@ import org.spongepowered.api.Sponge; public class ColorPluginAppender extends ColorAppender { public ColorPluginAppender(Appender oldAppender, ColorConsoleConfig config) { - super(oldAppender, config.getHideMessages(), config.isColorPluginTag(), config.isTruncateColor()); + super(oldAppender, config.getHideMessages(), config.isColorPluginTag(), config.isTruncateColor() + , config.isColorMessage() ? config.getLevelColors() : Collections.emptyMap()); } @Override diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index ab4663f..0d4d040 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -26,11 +26,11 @@ colorMessage: false logFormat: '[%d{HH:mm:ss} %level]: %msg%n' # Log Level Colors -FATAL: red blink +FATAL: red ERROR: red -WARN: yellow bold +WARN: yellow INFO: green -DEBUG: green bold +DEBUG: green TRACE: blue # Plugin Colors