Mercurial > prosody-hg
comparison core/loggingmanager.lua @ 7135:0b614b7333f1
loggingmanager: Move logic for adaptive column width into file sink, append tab if disabled (fixes separation between name and level in plain file sinks)
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Thu, 04 Feb 2016 17:49:09 +0100 |
| parents | b7b6b1d01224 |
| children | 6c3a33e54399 |
comparison
equal
deleted
inserted
replaced
| 7134:b7b6b1d01224 | 7135:0b614b7333f1 |
|---|---|
| 191 | 191 |
| 192 if sink_config.buffer_mode ~= false then | 192 if sink_config.buffer_mode ~= false then |
| 193 logfile:setvbuf(sink_config.buffer_mode or "line"); | 193 logfile:setvbuf(sink_config.buffer_mode or "line"); |
| 194 end | 194 end |
| 195 | 195 |
| 196 -- Column width for "source" (used by stdout and console) | |
| 197 local sourcewidth = sink_config.source_width; | |
| 198 | |
| 196 return function (name, level, message, ...) | 199 return function (name, level, message, ...) |
| 197 if timestamps then | 200 if timestamps then |
| 198 write(logfile, os_date(timestamps), " "); | 201 write(logfile, os_date(timestamps), " "); |
| 202 end | |
| 203 if sourcewidth then | |
| 204 sourcewidth = math_max(#name+2, sourcewidth); | |
| 205 name = name .. rep(" ", sourcewidth-#name); | |
| 206 else | |
| 207 name = name .. "\t"; | |
| 199 end | 208 end |
| 200 if ... then | 209 if ... then |
| 201 write(logfile, name, level, "\t", format(message, ...), "\n"); | 210 write(logfile, name, level, "\t", format(message, ...), "\n"); |
| 202 else | 211 else |
| 203 write(logfile, name, level, "\t", message, "\n"); | 212 write(logfile, name, level, "\t", message, "\n"); |
| 204 end | 213 end |
| 205 end | 214 end |
| 206 end | 215 end |
| 207 log_sink_types.file = log_to_file; | 216 log_sink_types.file = log_to_file; |
| 208 | 217 |
| 209 -- Column width for "source" (used by stdout and console) | |
| 210 local sourcewidth = 20; | |
| 211 | |
| 212 local function log_to_stdout(sink_config) | 218 local function log_to_stdout(sink_config) |
| 213 if not sink_config.timestamps then | 219 if not sink_config.timestamps then |
| 214 sink_config.timestamps = false; | 220 sink_config.timestamps = false; |
| 215 end | 221 end |
| 216 local logtofile = log_to_file(sink_config, stdout); | 222 sink_config.source_width = 20; |
| 217 return function (name, level, message, ...) | 223 return log_to_file(sink_config, stdout); |
| 218 sourcewidth = math_max(#name+2, sourcewidth); | |
| 219 name = name .. rep(" ", sourcewidth-#name); | |
| 220 return logtofile(name, level, message, ...); | |
| 221 end | |
| 222 end | 224 end |
| 223 log_sink_types.stdout = log_to_stdout; | 225 log_sink_types.stdout = log_to_stdout; |
| 224 | 226 |
| 225 local do_pretty_printing = true; | 227 local do_pretty_printing = true; |
| 226 | 228 |
