Software /
code /
prosody
Comparison
core/loggingmanager.lua @ 7137:4a5619a87b44
loggingmanager: Write out timestamps in same write() call as everything else
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 04 Feb 2016 17:57:12 +0100 |
parent | 7136:6c3a33e54399 |
child | 7138:ae1d53c2f598 |
comparison
equal
deleted
inserted
replaced
7136:6c3a33e54399 | 7137:4a5619a87b44 |
---|---|
33 local _ENV = nil; | 33 local _ENV = nil; |
34 | 34 |
35 -- The log config used if none specified in the config file (see reload_logging for initialization) | 35 -- The log config used if none specified in the config file (see reload_logging for initialization) |
36 local default_logging; | 36 local default_logging; |
37 local default_file_logging; | 37 local default_file_logging; |
38 local default_timestamp = "%b %d %H:%M:%S"; | 38 local default_timestamp = "%b %d %H:%M:%S "; |
39 -- The actual config loggingmanager is using | 39 -- The actual config loggingmanager is using |
40 local logging_config; | 40 local logging_config; |
41 | 41 |
42 local apply_sink_rules; | 42 local apply_sink_rules; |
43 local log_sink_types = setmetatable({}, { __newindex = function (t, k, v) rawset(t, k, v); apply_sink_rules(k); end; }); | 43 local log_sink_types = setmetatable({}, { __newindex = function (t, k, v) rawset(t, k, v); apply_sink_rules(k); end; }); |
185 | 185 |
186 local timestamps = sink_config.timestamps; | 186 local timestamps = sink_config.timestamps; |
187 | 187 |
188 if timestamps == true then | 188 if timestamps == true then |
189 timestamps = default_timestamp; -- Default format | 189 timestamps = default_timestamp; -- Default format |
190 elseif timestamps then | |
191 timestamps = timestamps .. " "; | |
190 end | 192 end |
191 | 193 |
192 if sink_config.buffer_mode ~= false then | 194 if sink_config.buffer_mode ~= false then |
193 logfile:setvbuf(sink_config.buffer_mode or "line"); | 195 logfile:setvbuf(sink_config.buffer_mode or "line"); |
194 end | 196 end |
195 | 197 |
196 -- Column width for "source" (used by stdout and console) | 198 -- Column width for "source" (used by stdout and console) |
197 local sourcewidth = sink_config.source_width; | 199 local sourcewidth = sink_config.source_width; |
198 | 200 |
199 return function (name, level, message, ...) | 201 return function (name, level, message, ...) |
200 if timestamps then | |
201 write(logfile, os_date(timestamps), " "); | |
202 end | |
203 if sourcewidth then | 202 if sourcewidth then |
204 sourcewidth = math_max(#name+2, sourcewidth); | 203 sourcewidth = math_max(#name+2, sourcewidth); |
205 name = name .. rep(" ", sourcewidth-#name); | 204 name = name .. rep(" ", sourcewidth-#name); |
206 else | 205 else |
207 name = name .. "\t"; | 206 name = name .. "\t"; |
208 end | 207 end |
209 if ... then | 208 if ... then |
210 write(logfile, name, level, "\t", format(message, ...), "\n"); | 209 write(logfile, timestamps and os_date(timestamps) or "", name, level, "\t", format(message, ...), "\n"); |
211 else | 210 else |
212 write(logfile, name, level, "\t", message, "\n"); | 211 write(logfile, timestamps and os_date(timestamps) or "", name, level, "\t", message, "\n"); |
213 end | 212 end |
214 end | 213 end |
215 end | 214 end |
216 log_sink_types.file = log_to_file; | 215 log_sink_types.file = log_to_file; |
217 | 216 |