_G.log = logger.init("general");
-module "loggingmanager"
+local _ENV = nil;
-- The log config used if none specified in the config file (see reload_logging for initialization)
local default_logging;
-- This function is called automatically when a new sink type is added [see apply_sink_rules()]
local function add_rule(sink_config)
local sink_maker = log_sink_types[sink_config.to];
- if sink_maker then
- -- Create sink
- local sink = sink_maker(sink_config);
+ if not sink_maker then
+ return; -- No such sink type
+ end
- -- Set sink for all chosen levels
- for level in pairs(get_levels(sink_config.levels or logging_levels)) do
- logger.add_level_sink(level, sink);
- end
- else
- -- No such sink type
+ -- Create sink
+ local sink = sink_maker(sink_config);
+
+ -- Set sink for all chosen levels
+ for level in pairs(get_levels(sink_config.levels or logging_levels)) do
+ logger.add_level_sink(level, sink);
end
end
end
-- Initialize config, etc. --
-function reload_logging()
+local function reload_logging()
local old_sink_types = {};
for name, sink_maker in pairs(log_sink_types) do
-- Column width for "source" (used by stdout and console)
local sourcewidth = 20;
-function log_sink_types.stdout(config)
- local timestamps = config.timestamps;
+function log_sink_types.stdout(sink_config)
+ local timestamps = sink_config.timestamps;
if timestamps == true then
timestamps = default_timestamp; -- Default format
logstyles["warn"] = getstyle("bold", "yellow");
logstyles["error"] = getstyle("bold", "red");
end
- function log_sink_types.console(config)
+ function log_sink_types.console(sink_config)
-- Really if we don't want pretty colours then just use plain stdout
if not do_pretty_printing then
- return log_sink_types.stdout(config);
+ return log_sink_types.stdout(sink_config);
end
- local timestamps = config.timestamps;
+ local timestamps = sink_config.timestamps;
if timestamps == true then
timestamps = default_timestamp; -- Default format
end
local empty_function = function () end;
-function log_sink_types.file(config)
- local log = config.filename;
+function log_sink_types.file(sink_config)
+ local log = sink_config.filename;
local logfile = io_open(log, "a+");
if not logfile then
return empty_function;
end
local write, flush = logfile.write, logfile.flush;
- local timestamps = config.timestamps;
+ local timestamps = sink_config.timestamps;
if timestamps == nil or timestamps == true then
timestamps = default_timestamp; -- Default format
end;
end
-function register_sink_type(name, sink_maker)
+local function register_sink_type(name, sink_maker)
local old_sink_maker = log_sink_types[name];
log_sink_types[name] = sink_maker;
return old_sink_maker;
end
-return _M;
+return {
+ reload_logging = reload_logging;
+ register_sink_type = register_sink_type;
+}