From caedb24d969811f7a901b1a3b8ff7fd0540f780b Mon Sep 17 00:00:00 2001 From: Michael Eischer <eischer@cs.fau.de> Date: Tue, 7 Jul 2020 17:28:51 +0200 Subject: [PATCH] Synchronize REFITLogger output methods As both stdout and stderr point to the same file this can cause garbling of log outputs between threads. --- src/refit/config/REFITLogger.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/refit/config/REFITLogger.java b/src/refit/config/REFITLogger.java index 9826976..96c6106 100644 --- a/src/refit/config/REFITLogger.java +++ b/src/refit/config/REFITLogger.java @@ -22,11 +22,17 @@ public class REFITLogger { private static void logNormal(String type, Object component, String message) { - System.out.println(REFITTime.timeMicroUTC.getAsLong() + " " + Thread.currentThread().getName() + " " + type + " " + component + ": " + message); + String str = REFITTime.timeMicroUTC.getAsLong() + " " + Thread.currentThread().getName() + " " + type + " " + component + ": " + message; + synchronized (REFITLogger.class) { + System.out.println(str); + } } private static void logError(String type, Object component, String message) { - System.err.println(REFITTime.timeMicroUTC.getAsLong() + " " + Thread.currentThread().getName() + " " + type + " " + component + ": " + message); + String str = REFITTime.timeMicroUTC.getAsLong() + " " + Thread.currentThread().getName() + " " + type + " " + component + ": " + message; + synchronized (REFITLogger.class) { + System.err.println(str); + } } @@ -46,6 +52,11 @@ public class REFITLogger { logError("[ERROR]", component, message); } + public static void logPlain(String message) { + synchronized (REFITLogger.class) { + System.out.println(message); + } + } // ############ // # SPECIFIC # -- GitLab