Software /
code /
prosody
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 |
parent | 1101:fb096ca4b296 |
child | 1343: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 |