Mercurial > prosody-hg
comparison core/loggingmanager.lua @ 1117:360ec48ea780
loggingmanager: File log sinks react to reopen-log-files event
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Tue, 05 May 2009 14:19:20 +0100 |
| parents | fb096ca4b296 |
| children | a0bee511d144 |
comparison
equal
deleted
inserted
replaced
| 1116:507702cf44f8 | 1117:360ec48ea780 |
|---|---|
| 8 local math_max, rep = math.max, string.rep; | 8 local math_max, rep = math.max, string.rep; |
| 9 local os_date, os_getenv = os.date, os.getenv; | 9 local os_date, os_getenv = os.date, os.getenv; |
| 10 local getstyle, getstring = require "util.termcolours".getstyle, require "util.termcolours".getstring; | 10 local getstyle, getstring = require "util.termcolours".getstyle, require "util.termcolours".getstring; |
| 11 | 11 |
| 12 local config = require "core.configmanager"; | 12 local config = require "core.configmanager"; |
| 13 | 13 local eventmanager = require "core.eventmanager"; |
| 14 local logger = require "util.logger"; | 14 local logger = require "util.logger"; |
| 15 | 15 |
| 16 _G.log = logger.init("general"); | 16 _G.log = logger.init("general"); |
| 17 | 17 |
| 18 module "loggingmanager" | 18 module "loggingmanager" |
| 188 end | 188 end |
| 189 end | 189 end |
| 190 end | 190 end |
| 191 end | 191 end |
| 192 | 192 |
| 193 local empty_function = function () end; | |
| 193 function log_sink_types.file(config) | 194 function log_sink_types.file(config) |
| 194 local log = config.filename; | 195 local log = config.filename; |
| 195 local logfile = io_open(log, "a+"); | 196 local logfile = io_open(log, "a+"); |
| 196 if not logfile then | 197 if not logfile then |
| 197 return function () end | 198 return empty_function; |
| 198 end | 199 end |
| 200 local write, flush = logfile.write, logfile.flush; | |
| 201 | |
| 202 eventmanager.add_event_hook("reopen-log-files", function () | |
| 203 if logfile then | |
| 204 logfile:close(); | |
| 205 end | |
| 206 logfile = io_open(log, "a+"); | |
| 207 if not logfile then | |
| 208 write, flush = empty_function, empty_function; | |
| 209 else | |
| 210 write, flush = logfile.write, logfile.flush; | |
| 211 end | |
| 212 end); | |
| 199 | 213 |
| 200 local timestamps = config.timestamps; | 214 local timestamps = config.timestamps; |
| 201 | 215 |
| 202 if timestamps == true then | 216 if timestamps == true then |
| 203 timestamps = default_timestamp; -- Default format | 217 timestamps = default_timestamp; -- Default format |
| 204 end | 218 end |
| 205 | 219 |
| 206 local write, format, flush = logfile.write, format, logfile.flush; | |
| 207 return function (name, level, message, ...) | 220 return function (name, level, message, ...) |
| 208 if timestamps then | 221 if timestamps then |
| 209 write(logfile, os_date(timestamps), " "); | 222 write(logfile, os_date(timestamps), " "); |
| 210 end | 223 end |
| 211 if ... then | 224 if ... then |
