loggingmanager: Move logic for adaptive column width into file sink, append tab if disabled (fixes separation between name and level in plain file sinks)
authorKim Alvefur <zash@zash.se>
Thu, 04 Feb 2016 17:49:09 +0100
changeset 7138 0b614b7333f1
parent 7137 b7b6b1d01224
child 7139 6c3a33e54399
loggingmanager: Move logic for adaptive column width into file sink, append tab if disabled (fixes separation between name and level in plain file sinks)
core/loggingmanager.lua
--- a/core/loggingmanager.lua	Thu Feb 04 17:33:16 2016 +0100
+++ b/core/loggingmanager.lua	Thu Feb 04 17:49:09 2016 +0100
@@ -193,10 +193,19 @@
 		logfile:setvbuf(sink_config.buffer_mode or "line");
 	end
 
+	-- Column width for "source" (used by stdout and console)
+	local sourcewidth = sink_config.source_width;
+
 	return function (name, level, message, ...)
 		if timestamps then
 			write(logfile, os_date(timestamps), " ");
 		end
+		if sourcewidth then
+			sourcewidth = math_max(#name+2, sourcewidth);
+			name = name ..  rep(" ", sourcewidth-#name);
+		else
+			name = name .. "\t";
+		end
 		if ... then
 			write(logfile, name, level, "\t", format(message, ...), "\n");
 		else
@@ -206,19 +215,12 @@
 end
 log_sink_types.file = log_to_file;
 
--- Column width for "source" (used by stdout and console)
-local sourcewidth = 20;
-
 local function log_to_stdout(sink_config)
 	if not sink_config.timestamps then
 		sink_config.timestamps = false;
 	end
-	local logtofile = log_to_file(sink_config, stdout);
-	return function (name, level, message, ...)
-		sourcewidth = math_max(#name+2, sourcewidth);
-		name = name ..  rep(" ", sourcewidth-#name);
-		return logtofile(name, level, message, ...);
-	end
+	sink_config.source_width = 20;
+	return log_to_file(sink_config, stdout);
 end
 log_sink_types.stdout = log_to_stdout;