aboutsummaryrefslogtreecommitdiffstats
path: root/core/loggingmanager.lua
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2016-02-04 14:57:45 +0000
committerMatthew Wild <mwild1@gmail.com>2016-02-04 14:57:45 +0000
commit00594e00a27c5172e9e5484e671427910f05cdd4 (patch)
tree90c1e4b01272e10b12ecce57402e602d2b05f7ed /core/loggingmanager.lua
parent7b11f2c6503e05ad3281b30c4998a8faaea3e418 (diff)
parentde372ae2452684e5a9de1b41e5f14bcda0bbe8d9 (diff)
downloadprosody-00594e00a27c5172e9e5484e671427910f05cdd4.tar.gz
prosody-00594e00a27c5172e9e5484e671427910f05cdd4.zip
Merge 0.10->trunk
Diffstat (limited to 'core/loggingmanager.lua')
-rw-r--r--core/loggingmanager.lua18
1 files changed, 15 insertions, 3 deletions
diff --git a/core/loggingmanager.lua b/core/loggingmanager.lua
index 15d2ee3c..259c2c44 100644
--- a/core/loggingmanager.lua
+++ b/core/loggingmanager.lua
@@ -15,6 +15,7 @@ local math_max, rep = math.max, string.rep;
local os_date = os.date;
local getstyle, setstyle = require "util.termcolours".getstyle, require "util.termcolours".setstyle;
+-- COMPAT: This should no longer be needed since the addition of setvbuf calls
if os.getenv("__FLUSH_LOG") then
local io_flush = io.flush;
local _io_write = io_write;
@@ -157,7 +158,6 @@ local function reload_logging()
logging_config = config.get("*", "log") or default_logging;
-
for name, sink_maker in pairs(old_sink_types) do
log_sink_types[name] = sink_maker;
end
@@ -185,6 +185,10 @@ function log_sink_types.stdout(sink_config)
timestamps = default_timestamp; -- Default format
end
+ if sink_config.buffer_mode ~= false then
+ io.stdout:setvbuf(sink_config.buffer_mode or "line");
+ end
+
return function (name, level, message, ...)
sourcewidth = math_max(#name+2, sourcewidth);
local namelen = #name;
@@ -220,6 +224,10 @@ do
timestamps = default_timestamp; -- Default format
end
+ if sink_config.buffer_mode ~= false then
+ io.stdout:setvbuf(sink_config.buffer_mode or "line");
+ end
+
return function (name, level, message, ...)
sourcewidth = math_max(#name+2, sourcewidth);
local namelen = #name;
@@ -247,7 +255,12 @@ function log_sink_types.file(sink_config)
if not logfile then
return empty_function;
end
- local write, flush = logfile.write, logfile.flush;
+
+ if sink_config.buffer_mode ~= false then
+ logfile:setvbuf(sink_config.buffer_mode or "line");
+ end
+
+ local write = logfile.write;
local timestamps = sink_config.timestamps;
@@ -264,7 +277,6 @@ function log_sink_types.file(sink_config)
else
write(logfile, name, "\t" , level, "\t", message, "\n");
end
- flush(logfile);
end;
end