Class: MCollective::Logger::File_logger

Inherits:
Base
  • Object
show all
Defined in:
lib/mcollective/logger/file_logger.rb

Overview

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

Instance Attribute Summary

Attributes inherited from Base

#active_level

Instance Method Summary collapse

Methods inherited from Base

#cycle_level, #initialize, #set_level

Constructor Details

This class inherits a constructor from MCollective::Logger::Base

Instance Method Details

#log(level, from, msg) ⇒ Object



39
40
41
42
43
44
45
# File 'lib/mcollective/logger/file_logger.rb', line 39

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

#reopenObject



47
48
49
50
51
52
# File 'lib/mcollective/logger/file_logger.rb', line 47

def reopen
  level = @logger.level
  @logger.close
  start
  @logger.level = level
end

#set_logging_level(level) ⇒ Object



24
25
26
27
28
29
# File 'lib/mcollective/logger/file_logger.rb', line 24

def set_logging_level(level)
  @logger.level = map_level(level)
rescue Exception => e
  @logger.level = ::Logger::DEBUG
  log(:error, "", "Could not set logging to #{level} using debug instead: #{e.class} #{e}")
end

#startObject



13
14
15
16
17
18
19
20
21
22
# File 'lib/mcollective/logger/file_logger.rb', line 13

def start
  config = Config.instance

  @logger = ::Logger.new(config.logfile, config.keeplogs, config.max_log_size)
  @logger.formatter = ::Logger::Formatter.new
  # ISO-8601 with sub-second precision and offset from UTC.
  @logger.formatter.datetime_format = "%Y-%m-%dT%H:%M:%S.%6N%:z "

  set_level(config.loglevel.to_sym)
end

#valid_levelsObject



31
32
33
34
35
36
37
# File 'lib/mcollective/logger/file_logger.rb', line 31

def valid_levels
  {:info  => ::Logger::INFO,
   :warn  => ::Logger::WARN,
   :debug => ::Logger::DEBUG,
   :fatal => ::Logger::FATAL,
   :error => ::Logger::ERROR}
end