X-Git-Url: https://review.fuel-infra.org/gitweb?a=blobdiff_plain;f=lib%2Fmcollective%2Flogger%2Ffile_logger.rb;fp=lib%2Fmcollective%2Flogger%2Ffile_logger.rb;h=484ef42404f66e3ca3846f93ada86793b83c06e2;hb=b87d2f4e68281062df1913440ca5753ae63314a9;hp=0000000000000000000000000000000000000000;hpb=ab0ea530b8ac956091f17b104ab2311336cfc250;p=packages%2Fprecise%2Fmcollective.git diff --git a/lib/mcollective/logger/file_logger.rb b/lib/mcollective/logger/file_logger.rb new file mode 100644 index 0000000..484ef42 --- /dev/null +++ b/lib/mcollective/logger/file_logger.rb @@ -0,0 +1,46 @@ +require 'logger' + +module MCollective + module Logger + # Impliments a file based logger using the standard ruby logger class + # + # To configure you should set: + # + # - config.logfile + # - config.keeplogs defaults to 2097152 + # - config.max_log_size defaults to 5 + class File_logger e + @logger.level = ::Logger::DEBUG + log(:error, "", "Could not set logging to #{level} using debug instead: #{e.class} #{e}") + end + + def valid_levels + {:info => ::Logger::INFO, + :warn => ::Logger::WARN, + :debug => ::Logger::DEBUG, + :fatal => ::Logger::FATAL, + :error => ::Logger::ERROR} + end + + def log(level, from, msg) + @logger.add(map_level(level)) { "#{from} #{msg}" } + rescue + # if this fails we probably cant show the user output at all, + # STDERR it as last resort + STDERR.puts("#{level}: #{msg}") + end + end + end +end