From 508c2f7627113074ce220c46d97b26734e352bbd Mon Sep 17 00:00:00 2001 From: ME1312 Date: Wed, 1 Dec 2021 05:42:55 -0500 Subject: [PATCH] Use the previous log level for ambiguous lines --- .../Host/Internal/InternalSubLogger.java | 44 +++++++------- .../Host/Executable/SubLoggerImpl.java | 57 +++++++++++-------- 2 files changed, 57 insertions(+), 44 deletions(-) diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubLogger.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubLogger.java index b2f1a549..72a46f9d 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubLogger.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubLogger.java @@ -94,38 +94,42 @@ public class InternalSubLogger extends SubLogger { } } - private static final String PATTERN = "^((?:\\s*\\[?([0-9]{2}:[0-9]{2}:[0-9]{2})]?)?[\\s\\/\\\\\\|]*(?:\\[|\\[.*\\/)?(DEBUG|MESSAGE|MSG|" + Pattern.quote(Level.INFO.getLocalizedName()) + "|INFO|" + Pattern.quote(Level.WARNING.getLocalizedName()) + "|WARNING|WARN|ERROR|ERR|" + Pattern.quote(Level.SEVERE.getLocalizedName()) + "|SEVERE)\\]?:?(?:\\s*>)?\\s*)"; + private Level level = Level.INFO; + private static final String PATTERN = "^((?:\\s*\\[?([0-9]{2}:[0-9]{2}:[0-9]{2})]?)?[\\s\\/\\\\\\|]*(?:\\[|\\[.*\\/)?(DEBUG|MESSAGE|MSG|" + Pattern.quote(Level.INFO.getLocalizedName()) + "|INFO|" + Pattern.quote(Level.WARNING.getLocalizedName()) + "|WARNING|WARN|ERROR|ERR|" + Pattern.quote(Level.SEVERE.getLocalizedName()) + "|SEVERE)\\]?(?::|\\s*>)?\\s*)"; private void log(String line) { if (!line.startsWith(">")) { String msg = line; - Level level; // REGEX Formatting - String type = ""; + String type = null; Matcher matcher = Pattern.compile(PATTERN).matcher(msg.replaceAll("\u001B\\[[;\\d]*m", "")); - while (matcher.find()) { + if (matcher.find()) { type = matcher.group(3).toUpperCase(); } msg = msg.replaceAll(PATTERN, ""); // Determine LOG LEVEL - if (type.equalsIgnoreCase(Level.WARNING.getLocalizedName())) { - level = Level.WARNING; - } else if (type.equalsIgnoreCase(Level.SEVERE.getLocalizedName())) { - level = Level.SEVERE; - } else switch (type) { - case "WARNING": - case "WARN": - level = Level.WARNING; - break; - case "SEVERE": - case "ERROR": - case "ERR": - level = Level.SEVERE; - break; - default: + if (type != null) { + if (type.equalsIgnoreCase(Level.INFO.getLocalizedName())) { level = Level.INFO; + } else if (type.equalsIgnoreCase(Level.WARNING.getLocalizedName())) { + level = Level.WARNING; + } else if (type.equalsIgnoreCase(Level.SEVERE.getLocalizedName())) { + level = Level.SEVERE; + } else switch (type) { + case "WARNING": + case "WARN": + level = Level.WARNING; + break; + case "SEVERE": + case "ERROR": + case "ERR": + level = Level.SEVERE; + break; + default: + level = Level.INFO; + } } log(level, msg); @@ -162,6 +166,8 @@ public class InternalSubLogger extends SubLogger { try { if (out != null) out.interrupt(); if (err != null) err.interrupt(); + level = Level.INFO; + if (started) { started = false; if (writer != null) { diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Executable/SubLoggerImpl.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Executable/SubLoggerImpl.java index 684b95f5..4a8fdde6 100644 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Executable/SubLoggerImpl.java +++ b/SubServers.Host/src/net/ME1312/SubServers/Host/Executable/SubLoggerImpl.java @@ -141,6 +141,7 @@ public class SubLoggerImpl { } } Process process = this.process; + if (level == null) level = logger.info; if (out == null) (out = new Thread(() -> start(process.getInputStream(), false), SubAPI.getInstance().getAppInfo().getName() + "::Log_Spooler(" + name + ')')).start(); if (err == null) (err = new Thread(() -> start(process.getErrorStream(), true), SubAPI.getInstance().getAppInfo().getName() + "::Error_Spooler(" + name + ')')).start(); } @@ -164,44 +165,48 @@ public class SubLoggerImpl { } } - private static final String PATTERN = "^((?:\\s*\\[?([0-9]{2}:[0-9]{2}:[0-9]{2})]?)?[\\s\\/\\\\\\|]*(?:\\[|\\[.*\\/)?(MESSAGE|MSG|" + Pattern.quote(Level.INFO.getLocalizedName()) + "|INFO|" + Pattern.quote(Level.WARNING.getLocalizedName()) + "|WARNING|WARN|ERROR|ERR|" + Pattern.quote(Level.SEVERE.getLocalizedName()) + "|SEVERE)\\]?:?(?:\\s*>)?\\s*)"; + private LogStream level; + private static final String PATTERN = "^((?:\\s*\\[?([0-9]{2}:[0-9]{2}:[0-9]{2})]?)?[\\s\\/\\\\\\|]*(?:\\[|\\[.*\\/)?(MESSAGE|MSG|" + Pattern.quote(Level.INFO.getLocalizedName()) + "|INFO|" + Pattern.quote(Level.WARNING.getLocalizedName()) + "|WARNING|WARN|ERROR|ERR|" + Pattern.quote(Level.SEVERE.getLocalizedName()) + "|SEVERE)\\]?(?::|\\s*>)?\\s*)"; private void log(String line) { if (!line.startsWith(">")) { String msg = line; - LogStream level; // REGEX Formatting - String type = ""; + String type = null; Matcher matcher = Pattern.compile(PATTERN).matcher(msg.replaceAll("\u001B\\[[;\\d]*m", "")); - while (matcher.find()) { + if (matcher.find()) { type = matcher.group(3).toUpperCase(); } msg = msg.replaceAll(PATTERN, ""); // Determine LOG LEVEL - if (type.equalsIgnoreCase(Level.WARNING.getLocalizedName())) { - level = logger.warn; - } else if (type.equalsIgnoreCase(Level.SEVERE.getLocalizedName())) { - level = logger.severe; - } else switch (type) { - case "WARNING": - case "WARN": - level = logger.warn; - break; - case "SEVERE": - level = logger.severe; - break; - case "ERROR": - case "ERR": - level = logger.error; - break; - case "MSG": - case "MESSAGE": - level = logger.message; - break; - default: + if (type != null) { + if (type.equalsIgnoreCase(Level.INFO.getLocalizedName())) { level = logger.info; + } else if (type.equalsIgnoreCase(Level.WARNING.getLocalizedName())) { + level = logger.warn; + } else if (type.equalsIgnoreCase(Level.SEVERE.getLocalizedName())) { + level = logger.severe; + } else switch (type) { + case "WARNING": + case "WARN": + level = logger.warn; + break; + case "SEVERE": + level = logger.severe; + break; + case "ERROR": + case "ERR": + level = logger.error; + break; + case "MSG": + case "MESSAGE": + level = logger.message; + break; + default: + level = logger.info; + } } // Log to FILTER @@ -222,6 +227,8 @@ public class SubLoggerImpl { try { if (out != null) out.interrupt(); if (err != null) err.interrupt(); + level = null; + if (started) { started = false; if (writer != null) {