From 3015c946d18d28566fd92201291a33b0872eccc1 Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Wed, 29 Apr 2009 20:52:24 +0100 Subject: loggingmanager: Add ability to set 'log' config option to a filename, which causes all levels >= info to be logged to that file --- core/loggingmanager.lua | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'core/loggingmanager.lua') diff --git a/core/loggingmanager.lua b/core/loggingmanager.lua index 298e4c45..5dff6a34 100644 --- a/core/loggingmanager.lua +++ b/core/loggingmanager.lua @@ -19,6 +19,7 @@ module "loggingmanager" -- The log config used if none specified in the config file local default_logging = { { to = "console" } }; +local default_file_logging = { { to = "file", levels = { min = "info" } } }; -- The actual config loggingmanager is using local logging_config = config.get("*", "core", "log") or default_logging; @@ -28,6 +29,8 @@ local log_sink_types = setmetatable({}, { __newindex = function (t, k, v) rawset local get_levels; local logging_levels = { "debug", "info", "warn", "error", "critical" } +-- Put a rule into action. Requires that the sink type has already been registered. +-- 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 @@ -65,8 +68,9 @@ local function add_rule(sink_config) end end --- Search for all rules using a particular sink type, --- and apply them +-- Search for all rules using a particular sink type, and apply +-- them. Called automatically when a new sink type is added to +-- the log_sink_types table. function apply_sink_rules(sink_type) if type(logging_config) == "table" then for _, sink_config in pairs(logging_config) do @@ -74,9 +78,14 @@ function apply_sink_rules(sink_type) add_rule(sink_config); end end - elseif type(logging_config) == "string" and sink_type == "file" then + elseif type(logging_config) == "string" and (not logging_config:match("^%*")) and sink_type == "file" then -- User specified simply a filename, and the "file" sink type -- was just added + for _, sink_config in pairs(default_file_logging) do + sink_config.filename = logging_config; + add_rule(sink_config); + sink_config.filename = nil; + end end end -- cgit v1.2.3