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