Software /
code /
prosody
Diff
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 |
line wrap: on
line diff
--- a/core/loggingmanager.lua Tue May 05 14:17:06 2009 +0100 +++ b/core/loggingmanager.lua Tue May 05 14:19:20 2009 +0100 @@ -10,7 +10,7 @@ local getstyle, getstring = require "util.termcolours".getstyle, require "util.termcolours".getstring; local config = require "core.configmanager"; - +local eventmanager = require "core.eventmanager"; local logger = require "util.logger"; _G.log = logger.init("general"); @@ -190,12 +190,26 @@ end end +local empty_function = function () end; function log_sink_types.file(config) local log = config.filename; local logfile = io_open(log, "a+"); if not logfile then - return function () end + return empty_function; end + local write, flush = logfile.write, logfile.flush; + + eventmanager.add_event_hook("reopen-log-files", function () + if logfile then + logfile:close(); + end + logfile = io_open(log, "a+"); + if not logfile then + write, flush = empty_function, empty_function; + else + write, flush = logfile.write, logfile.flush; + end + end); local timestamps = config.timestamps; @@ -203,7 +217,6 @@ timestamps = default_timestamp; -- Default format end - local write, format, flush = logfile.write, format, logfile.flush; return function (name, level, message, ...) if timestamps then write(logfile, os_date(timestamps), " ");