Class: Log4r::SyslogOutputter

Inherits:
Outputter
  • Object
show all
Includes:
Syslog::Constants
Defined in:
lib/log4r/outputter/syslogoutputter.rb

Constant Summary collapse

SYSLOG_LEVELS_MAP =

maps default log4r levels to syslog priorities (logevents never see ALL and OFF) SYSLOG Levels are:

"DEBUG"  => Syslog::LOG_DEBUG
"INFO"   => Syslog::LOG_INFO
"NOTICE" => Syslog::LOG_NOTICE
"WARN"   => Syslog::LOG_WARN
"ERROR"  => Syslog::LOG_ERROR
"FATAL"  => Syslog::LOG_FATAL
"ALERT"  => Syslog::LOG_ALERT
"EMERG"  => Syslog::LOG_EMERG
{
  "DEBUG"  => LOG_DEBUG, 
  "INFO"   => LOG_INFO, 
  "NOTICE" => LOG_NOTICE,  # by default NOTICE is not in log4r
  "WARN"   => LOG_WARNING, 
  "ERROR"  => LOG_ERR, 
  "FATAL"  => LOG_CRIT,
  "ALERT"  => LOG_ALERT,   # by default ALERT is not in log4r
  "EMERG"  => LOG_EMERG,   # by default EMERG is not in log4r
}
SYSLOG_LOG4R_MAP =

mapping from Log4r default levels to syslog, by string name “DEBUG” => “DEBUG”

"INFO"   => "INFO" 
"WARN"   => "WARN"
"ERROR"  => "ERROR" 
"FATAL"  => "FATAL"
{
  "DEBUG"  => "DEBUG", 
  "INFO"   => "INFO", 
  "WARN"   => "WARN", 
  "ERROR"  => "ERROR", 
  "FATAL"  => "FATAL"
  # "NOTICE" => "INFO",      # by default NOTICE is not in log4r
  # "ALERT"  => "FATAL",     # by default ALERT is not in log4r
  # "EMERG"  => "FATAL"      # by default EMERG is not in log4r
}

Instance Attribute Summary

Attributes inherited from Outputter

#colors, #formatter, #level, #name

Instance Method Summary collapse

Methods inherited from Outputter

[], []=, color, each, each_outputter, #flush, #level_key, #only_at, stderr, stdout

Constructor Details

#initialize(_name, hash = {}) ⇒ SyslogOutputter

There are 3 hash arguments

:ident

syslog ident, defaults to _name

:logopt

syslog logopt, defaults to LOG_PID | LOG_CONS

:facility

syslog facility, defaults to LOG_USER



64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/log4r/outputter/syslogoutputter.rb', line 64

def initialize(_name, hash={})
  super(_name, hash)
  ident = (hash[:ident] or hash['ident'] or _name)
  logopt = (hash[:logopt] or hash['logopt'] or LOG_PID | LOG_CONS).to_i
  facility = (hash[:facility] or hash['facility'] or LOG_USER).to_i
  map_levels_by_name_to_syslog()
  if ( Syslog.opened? ) then
	Logger.log_internal { "Syslog already initialized, to alter, " +
	  "you must close first"}
  end
  @syslog = ( Syslog.opened? ) ? Syslog : Syslog.open(ident, logopt, facility)
end

Instance Method Details

#closeObject



81
82
83
84
85
86
# File 'lib/log4r/outputter/syslogoutputter.rb', line 81

def close
  @syslog.close unless @syslog.nil?
  @level = OFF
  OutputterFactory.create_methods(self)
  Logger.log_internal {"Outputter '#{@name}' closed Syslog and set to OFF"}
end

#closed?Boolean

Returns:

  • (Boolean)


77
78
79
# File 'lib/log4r/outputter/syslogoutputter.rb', line 77

def closed?
  return !@syslog.opened?
end

#get_levels_mapObject



110
111
112
# File 'lib/log4r/outputter/syslogoutputter.rb', line 110

def get_levels_map()
  return @levels_map
end

#map_levels_by_name_to_syslog(lmap = SYSLOG_LOG4R_MAP) ⇒ Object

A single hash argument that maps custom names to syslog names

[levels_map] A map that will create a linkage between levels in a hash and underlying syslog levels. By default, these are direct mapping of the log4r levels (e.g. “DEBUG” => “DEBUG”) If you have defined your own custom levels, you should provide this underlying mapping, otherwise all messages will be mapped to the underlying syslog level of INFO by default. e.g. You have created custom levels called: Configurator.custom_levels "HIGH", "MEDIUM", "LOW" To map these to ‘equivilent’ syslog levels, after instantiatin a syslogoutputter: SyslogOutputter.map_levels_by_name_to_syslog( { "HIGH" => "ALERT", "MEDIUM" => "WARN", "LOW" => "INFO" } )



106
107
108
# File 'lib/log4r/outputter/syslogoutputter.rb', line 106

def map_levels_by_name_to_syslog( lmap = SYSLOG_LOG4R_MAP )
  @levels_map = lmap
end