5 # Impliments a file based logger using the standard ruby logger class
7 # To configure you should set:
10 # - config.keeplogs defaults to 2097152
11 # - config.max_log_size defaults to 5
12 class File_logger<Base
14 config = Config.instance
16 @logger = ::Logger.new(config.logfile, config.keeplogs, config.max_log_size)
17 @logger.formatter = ::Logger::Formatter.new
19 set_level(config.loglevel.to_sym)
22 def set_logging_level(level)
23 @logger.level = map_level(level)
25 @logger.level = ::Logger::DEBUG
26 log(:error, "", "Could not set logging to #{level} using debug instead: #{e.class} #{e}")
30 {:info => ::Logger::INFO,
31 :warn => ::Logger::WARN,
32 :debug => ::Logger::DEBUG,
33 :fatal => ::Logger::FATAL,
34 :error => ::Logger::ERROR}
37 def log(level, from, msg)
38 @logger.add(map_level(level)) { "#{from} #{msg}" }
40 # if this fails we probably cant show the user output at all,
41 # STDERR it as last resort
42 STDERR.puts("#{level}: #{msg}")