Use TerminalConsoleAppender, with coloured warning and error output.
Close #2.
This commit is contained in:
parent
6fd12356d0
commit
f392de5f44
|
@ -57,9 +57,11 @@ repositories {
|
||||||
def embedLibs = ['org.spongepowered:mixin:0.8', 'org.ow2.asm:asm-util:6.2',
|
def embedLibs = ['org.spongepowered:mixin:0.8', 'org.ow2.asm:asm-util:6.2',
|
||||||
'org.ow2.asm:asm-analysis:6.2', 'org.yaml:snakeyaml:1.23',
|
'org.ow2.asm:asm-analysis:6.2', 'org.yaml:snakeyaml:1.23',
|
||||||
'org.xerial:sqlite-jdbc:3.28.0', 'mysql:mysql-connector-java:5.1.47',
|
'org.xerial:sqlite-jdbc:3.28.0', 'mysql:mysql-connector-java:5.1.47',
|
||||||
'commons-lang:commons-lang:2.6', 'jline:jline:2.12.1',
|
'commons-lang:commons-lang:2.6', 'com.googlecode.json-simple:json-simple:1.1.1',
|
||||||
'com.googlecode.json-simple:json-simple:1.1.1', 'org.apache.logging.log4j:log4j-jul:2.11.2',
|
'org.apache.logging.log4j:log4j-jul:2.11.2', 'net.md-5:SpecialSource:1.8.6',
|
||||||
'net.md-5:SpecialSource:1.8.6', 'net.minecraftforge:eventbus:2.0.0-milestone.1:service']
|
'net.minecraftforge:eventbus:2.0.0-milestone.1:service', 'org.jline:jline-terminal-jansi:3.12.1',
|
||||||
|
'org.fusesource.jansi:jansi:1.18', 'org.jline:jline-terminal:3.12.1',
|
||||||
|
'org.jline:jline-reader:3.12.1', 'jline:jline:2.12.1']
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
minecraft "net.minecraftforge:forge:$minecraftVersion-$forgeVersion"
|
minecraft "net.minecraftforge:forge:$minecraftVersion-$forgeVersion"
|
||||||
|
@ -83,7 +85,7 @@ def getGitHash = { ->
|
||||||
}
|
}
|
||||||
|
|
||||||
processResources {
|
processResources {
|
||||||
filesNotMatching("**/accesstransformer.cfg") {
|
filesMatching("**/mods.toml") {
|
||||||
expand 'version': "$minecraftVersion-${project.version}-${getGitHash()}"
|
expand 'version': "$minecraftVersion-${project.version}-${getGitHash()}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,18 +4,21 @@ import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
import org.bukkit.craftbukkit.v1_14_R1.command.ColouredConsoleSender;
|
import org.bukkit.craftbukkit.v1_14_R1.command.ColouredConsoleSender;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.Overwrite;
|
||||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
|
||||||
|
|
||||||
import java.io.PrintStream;
|
@Mixin(value = ColouredConsoleSender.class, remap = false)
|
||||||
|
public class ColouredConsoleSenderMixin extends CraftConsoleCommandSenderMixin {
|
||||||
@Mixin(ColouredConsoleSender.class)
|
|
||||||
public class ColouredConsoleSenderMixin {
|
|
||||||
|
|
||||||
private static final Logger LOGGER = LogManager.getLogger("Console");
|
private static final Logger LOGGER = LogManager.getLogger("Console");
|
||||||
|
|
||||||
@Redirect(method = "sendMessage", remap = false, at = @At(value = "INVOKE", target = "Ljava/io/PrintStream;println(Ljava/lang/String;)V"))
|
/**
|
||||||
public void arclight$sendMessage(PrintStream printStream, String x) {
|
* @author IzzelAliz
|
||||||
LOGGER.info(x);
|
* @reason use TerminalConsoleAppender
|
||||||
|
*/
|
||||||
|
@Overwrite
|
||||||
|
public void sendMessage(String message) {
|
||||||
|
if (!this.conversationTracker.isConversingModaly()) {
|
||||||
|
LOGGER.info(message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,23 +2,27 @@ package io.izzel.arclight.mixin.bukkit;
|
||||||
|
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.craftbukkit.v1_14_R1.command.CraftConsoleCommandSender;
|
import org.bukkit.craftbukkit.v1_14_R1.command.CraftConsoleCommandSender;
|
||||||
|
import org.bukkit.craftbukkit.v1_14_R1.conversations.ConversationTracker;
|
||||||
|
import org.spongepowered.asm.mixin.Final;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Overwrite;
|
import org.spongepowered.asm.mixin.Overwrite;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
|
||||||
@Mixin(CraftConsoleCommandSender.class)
|
@Mixin(value = CraftConsoleCommandSender.class, remap = false)
|
||||||
public class CraftConsoleCommandSenderMixin {
|
public class CraftConsoleCommandSenderMixin {
|
||||||
|
|
||||||
private static final Logger LOGGER = LogManager.getLogger("Console");
|
private static final Logger LOGGER = LogManager.getLogger("Console");
|
||||||
|
|
||||||
|
@Shadow @Final protected ConversationTracker conversationTracker;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author IzzelAliz
|
* @author IzzelAliz
|
||||||
* @reason
|
* @reason
|
||||||
*/
|
*/
|
||||||
@Overwrite(remap = false)
|
@Overwrite
|
||||||
public void sendRawMessage(String message) {
|
public void sendRawMessage(String message) {
|
||||||
LOGGER.info(ChatColor.stripColor(message));
|
LOGGER.info(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,13 +2,10 @@ package io.izzel.arclight.server;
|
||||||
|
|
||||||
import io.izzel.arclight.api.Unsafe;
|
import io.izzel.arclight.api.Unsafe;
|
||||||
import io.izzel.arclight.forgeinstaller.ForgeInstaller;
|
import io.izzel.arclight.forgeinstaller.ForgeInstaller;
|
||||||
import io.izzel.arclight.mod.util.BukkitOptionParser;
|
|
||||||
import io.izzel.arclight.mod.util.remapper.ArclightRemapper;
|
import io.izzel.arclight.mod.util.remapper.ArclightRemapper;
|
||||||
import io.izzel.arclight.util.EnumHelper;
|
import io.izzel.arclight.util.EnumHelper;
|
||||||
import joptsimple.OptionSet;
|
|
||||||
import net.minecraftforge.server.ServerMain;
|
import net.minecraftforge.server.ServerMain;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.fusesource.jansi.AnsiConsole;
|
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
|
@ -27,26 +24,6 @@ public class Main {
|
||||||
t.printStackTrace();
|
t.printStackTrace();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
|
||||||
OptionSet options = new BukkitOptionParser().parse(args);
|
|
||||||
String jline_UnsupportedTerminal = new String(new char[]{'j', 'l', 'i', 'n', 'e', '.', 'U', 'n', 's', 'u', 'p', 'p', 'o', 'r', 't', 'e', 'd', 'T', 'e', 'r', 'm', 'i', 'n', 'a', 'l'});
|
|
||||||
String jline_terminal = new String(new char[]{'j', 'l', 'i', 'n', 'e', '.', 't', 'e', 'r', 'm', 'i', 'n', 'a', 'l'});
|
|
||||||
|
|
||||||
boolean useJline = !(jline_UnsupportedTerminal).equals(System.getProperty(jline_terminal));
|
|
||||||
|
|
||||||
if (options.has("nojline")) {
|
|
||||||
System.setProperty("user.language", "en");
|
|
||||||
useJline = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (useJline) {
|
|
||||||
AnsiConsole.systemInstall();
|
|
||||||
} else {
|
|
||||||
System.setProperty(jline.TerminalFactory.JLINE_TERMINAL, jline.UnsupportedTerminal.class.getName());
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
System.setProperty("java.util.logging.manager", "org.apache.logging.log4j.jul.LogManager");
|
System.setProperty("java.util.logging.manager", "org.apache.logging.log4j.jul.LogManager");
|
||||||
System.setProperty("log4j.jul.LoggerAdapter", "io.izzel.arclight.mod.util.ArclightLoggerAdapter");
|
System.setProperty("log4j.jul.LoggerAdapter", "io.izzel.arclight.mod.util.ArclightLoggerAdapter");
|
||||||
|
|
69
arclight-coremod/src/main/resources/log4j2.xml
Normal file
69
arclight-coremod/src/main/resources/log4j2.xml
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Configuration status="warn" packages="net.minecrell.terminalconsole,net.minecrell.terminalconsole.util,com.mojang.util,cpw.mods.modlauncher.log" shutdownHook="disable">
|
||||||
|
<filters>
|
||||||
|
<ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="NEUTRAL"/>
|
||||||
|
<MarkerFilter marker="NETWORK_PACKETS" onMatch="${sys:forge.logging.marker.networking:-DENY}" onMismatch="NEUTRAL"/>
|
||||||
|
<MarkerFilter marker="CLASSLOADING" onMatch="${sys:forge.logging.marker.classloading:-DENY}" onMismatch="NEUTRAL"/>
|
||||||
|
<MarkerFilter marker="LAUNCHPLUGIN" onMatch="${sys:forge.logging.marker.launchplugin:-DENY}" onMismatch="NEUTRAL"/>
|
||||||
|
<MarkerFilter marker="CLASSDUMP" onMatch="${sys:forge.logging.marker.classdump:-DENY}" onMismatch="NEUTRAL"/>
|
||||||
|
<MarkerFilter marker="AXFORM" onMatch="${sys:forge.logging.marker.axform:-DENY}" onMismatch="NEUTRAL"/>
|
||||||
|
<MarkerFilter marker="EVENTBUS" onMatch="${sys:forge.logging.marker.eventbus:-DENY}" onMismatch="NEUTRAL"/>
|
||||||
|
<MarkerFilter marker="DISTXFORM" onMatch="${sys:forge.logging.marker.distxform:-DENY}" onMismatch="NEUTRAL"/>
|
||||||
|
<MarkerFilter marker="SCAN" onMatch="${sys:forge.logging.marker.scan:-DENY}" onMismatch="NEUTRAL"/>
|
||||||
|
<MarkerFilter marker="REGISTRIES" onMatch="${sys:forge.logging.marker.registries:-DENY}" onMismatch="NEUTRAL"/>
|
||||||
|
<MarkerFilter marker="REGISTRYDUMP" onMatch="${sys:forge.logging.marker.registrydump:-DENY}" onMismatch="NEUTRAL"/>
|
||||||
|
<MarkerFilter marker="SPLASH" onMatch="${sys:forge.logging.marker.splash:-DENY}" onMismatch="NEUTRAL"/>
|
||||||
|
<MarkerFilter marker="FORGEMOD" onMatch="${sys:forge.logging.marker.forgemod:-ACCEPT}" onMismatch="NEUTRAL"/>
|
||||||
|
<MarkerFilter marker="LOADING" onMatch="${sys:forge.logging.marker.loading:-ACCEPT}" onMismatch="NEUTRAL"/>
|
||||||
|
<MarkerFilter marker="CORE" onMatch="${sys:forge.logging.marker.core:-ACCEPT}" onMismatch="NEUTRAL"/>
|
||||||
|
</filters>
|
||||||
|
<Appenders>
|
||||||
|
<TerminalConsole name="Console">
|
||||||
|
<PatternLayout>
|
||||||
|
<!-- use white for info output -->
|
||||||
|
<LoggerNamePatternSelector noConsoleNoAnsi="true" defaultPattern="%highlight{[%d{HH:mm:ss}] [%t/%level] [%c{1.}/%markerSimpleName]: %minecraftFormatting{%msg}%n%tEx}{INFO=normal}">
|
||||||
|
<!-- don't include the full logger name for Mojang's logs since they use full class names and it's very verbose -->
|
||||||
|
<PatternMatch key="net.minecraft." pattern="%highlight{[%d{HH:mm:ss}] [%t/%level] [minecraft/%logger{1}]: %minecraftFormatting{%msg}%n%tEx}{INFO=normal}"/>
|
||||||
|
<PatternMatch key="com.mojang." pattern="%highlight{[%d{HH:mm:ss}] [%t/%level] [mojang/%logger{1}]: %minecraftFormatting{%msg}%n%tEx}{INFO=normal}"/>
|
||||||
|
</LoggerNamePatternSelector>
|
||||||
|
</PatternLayout>
|
||||||
|
</TerminalConsole>
|
||||||
|
<Queue name="ServerGuiConsole" ignoreExceptions="true">
|
||||||
|
<PatternLayout>
|
||||||
|
<LoggerNamePatternSelector defaultPattern="[%d{HH:mm:ss}] [%t/%level] [%c{2.}/%markerSimpleName]: %minecraftFormatting{%msg}{strip}%n">
|
||||||
|
<!-- don't include the full logger name for Mojang's logs since they use full class names and it's very verbose -->
|
||||||
|
<PatternMatch key="net.minecraft." pattern="[%d{HH:mm:ss}] [%t/%level] [minecraft/%logger{1}]: %minecraftFormatting{%msg}{strip}%n"/>
|
||||||
|
<PatternMatch key="com.mojang." pattern="[%d{HH:mm:ss}] [%t/%level] [mojang/%logger{1}]: %minecraftFormatting{%msg}{strip}%n"/>
|
||||||
|
</LoggerNamePatternSelector>
|
||||||
|
</PatternLayout>
|
||||||
|
</Queue>
|
||||||
|
<RollingRandomAccessFile name="File" fileName="logs/latest.log" filePattern="logs/%d{yyyy-MM-dd}-%i.log.gz">
|
||||||
|
<PatternLayout pattern="[%d{ddMMMyyyy HH:mm:ss.SSS}] [%t/%level] [%logger/%markerSimpleName]: %minecraftFormatting{%msg}{strip}%n%xEx"/>
|
||||||
|
<Policies>
|
||||||
|
<TimeBasedTriggeringPolicy/>
|
||||||
|
<OnStartupTriggeringPolicy/>
|
||||||
|
</Policies>
|
||||||
|
<DefaultRolloverStrategy max="99" fileIndex="min"/>
|
||||||
|
</RollingRandomAccessFile>
|
||||||
|
<RollingRandomAccessFile name="DebugFile" fileName="logs/debug.log" filePattern="logs/debug-%i.log.gz">
|
||||||
|
<PatternLayout pattern="[%d{ddMMMyyyy HH:mm:ss.SSS}] [%t/%level] [%logger/%markerSimpleName]: %minecraftFormatting{%msg}{strip}%n%xEx"/>
|
||||||
|
<Policies>
|
||||||
|
<OnStartupTriggeringPolicy/>
|
||||||
|
<SizeBasedTriggeringPolicy size="200MB"/>
|
||||||
|
</Policies>
|
||||||
|
<DefaultRolloverStrategy max="5" fileIndex="min"/>
|
||||||
|
</RollingRandomAccessFile>
|
||||||
|
</Appenders>
|
||||||
|
<Loggers>
|
||||||
|
<!-- make sure mojang's logging is set to 'info' so that their LOGGER.isDebugEnabled() behavior isn't active -->
|
||||||
|
<Logger level="${sys:forge.logging.mojang.level:-info}" name="com.mojang"/>
|
||||||
|
<Logger level="${sys:forge.logging.mojang.level:-info}" name="net.minecraft"/>
|
||||||
|
<Logger level="${sys:forge.logging.classtransformer.level:-info}" name="cpw.mods.modlauncher.ClassTransformer"/>
|
||||||
|
<Root level="all">
|
||||||
|
<AppenderRef ref="Console" level="${sys:forge.logging.console.level:-info}"/>
|
||||||
|
<AppenderRef ref="ServerGuiConsole" level="${sys:forge.logging.console.level:-info}"/>
|
||||||
|
<AppenderRef ref="File" level="${sys:forge.logging.file.level:-info}"/>
|
||||||
|
<AppenderRef ref="DebugFile" level="${sys:forge.logging.debugFile.level:-debug}"/>
|
||||||
|
</Root>
|
||||||
|
</Loggers>
|
||||||
|
</Configuration>
|
Loading…
Reference in New Issue
Block a user