class Log4r::SyslogOutputter
Constants
- 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
- SYSLOG_LOG4R_MAP
mapping from
Log4r
default levels to syslog, by string name “DEBUG” => “DEBUG”"INFO" => "INFO" "WARN" => "WARN" "ERROR" => "ERROR" "FATAL" => "FATAL"
Public Class Methods
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
Log4r::Outputter::new
# 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
Public Instance Methods
# 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
# File lib/log4r/outputter/syslogoutputter.rb, line 77 def closed? return !@syslog.opened? end
# File lib/log4r/outputter/syslogoutputter.rb, line 110 def get_levels_map() return @levels_map end
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" } )
# File lib/log4r/outputter/syslogoutputter.rb, line 106 def map_levels_by_name_to_syslog( lmap = SYSLOG_LOG4R_MAP ) @levels_map = lmap end
Private Instance Methods
# File lib/log4r/outputter/syslogoutputter.rb, line 116 def canonical_log(logevent) pri = SYSLOG_LEVELS_MAP[@levels_map[LNAMES[logevent.level]]] rescue pri = LOG_INFO o = format(logevent) if o.kind_of? Exception then msg = "#{o.class} at (#{o.backtrace[0]}): #{o.message}" elsif o.respond_to? :to_str then msg = o.to_str else msg = o.inspect end @syslog.log(pri, '%s', msg) end