Class: MCollective::Logger::Syslog_logger

Inherits:
Base
  • Object
show all
Includes:
Syslog::Constants
Defined in:
lib/mcollective/logger/syslog_logger.rb

Overview

Implements a syslog based logger using the standard ruby syslog class

Instance Attribute Summary

Attributes inherited from Base

#active_level

Instance Method Summary collapse

Methods inherited from Base

#cycle_level, #initialize, #reopen, #set_level

Constructor Details

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

Instance Method Details

#log(level, from, msg) ⇒ Object



42
43
44
45
46
47
48
49
50
# File 'lib/mcollective/logger/syslog_logger.rb', line 42

def log(level, from, msg)
  if @known_levels.index(level) >= @known_levels.index(@active_level)
    Syslog.send(map_level(level), "#{from} #{msg}")
  end
rescue
  # if this fails we probably cant show the user output at all,
  # STDERR it as last resort
  STDERR.puts("#{level}: #{msg}")
end

#set_logging_level(level) ⇒ Object



30
31
32
# File 'lib/mcollective/logger/syslog_logger.rb', line 30

def set_logging_level(level)
  # noop
end

#startObject



9
10
11
12
13
14
15
16
17
18
19
# File 'lib/mcollective/logger/syslog_logger.rb', line 9

def start
  config = Config.instance

  facility = syslog_facility(config.logfacility)
  level = config.loglevel.to_sym

  Syslog.close if Syslog.opened?
  Syslog.open(File.basename($0), 3, facility)

  set_level(level)
end

#syslog_facility(facility) ⇒ Object



21
22
23
24
25
26
27
28
# File 'lib/mcollective/logger/syslog_logger.rb', line 21

def syslog_facility(facility)
  begin
    Syslog.const_get("LOG_#{facility.upcase}")
  rescue NameError => e
    STDERR.puts "Invalid syslog facility #{facility} supplied, reverting to USER"
    Syslog::LOG_USER
  end
end

#valid_levelsObject



34
35
36
37
38
39
40
# File 'lib/mcollective/logger/syslog_logger.rb', line 34

def valid_levels
  {:info  => :info,
   :warn  => :warning,
   :debug => :debug,
   :fatal => :crit,
   :error => :err}
end