# :include: ../rdoc/syslogoutputter # # Version:: $Id: syslogoutputter.rb,v 1.5 2004/03/17 20:18:00 fando Exp $ # Author:: Steve Lumos # Author:: Leon Torres begin require 'syslog' module Log4r class SyslogOutputter < Outputter include Syslog::Constants # This is the mapping of syslog levels to integers #(7 = debug, 6 = info, 5 = notice, 4 = warning, 3 = err, 2 = crit, 1 = alert, 0 = emerg, x = nothing) SYSLOG_LOGGER_MAP = { 0 => LOG_DEBUG, 1 => LOG_DEBUG, 2 => LOG_INFO, 3 => LOG_WARNING, 4 => LOG_ERR, 5 => LOG_CRIT, 6 => LOG_CRIT } # 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 def initialize(_name, hash={}) super(_name, hash) ident = (hash[:ident] or _name) logopt = (hash[:logopt] or LOG_PID | LOG_CONS).to_i facility = Syslog::Constants.const_get(hash[:facility]) if hash[:facility] != nil and Syslog::Constants.const_defined?(hash[:facility]) facility ||= Syslog::LOG_LOCAL0 @syslog = Syslog.open(ident, logopt, facility) end def closed? return !@syslog.opened? end 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 private def canonical_log(logevent) pri = SYSLOG_LOGGER_MAP[logevent.level] o = logevent.data msg = format(logevent) @syslog.log(pri, '%s', msg) end end end rescue Exception => detail module Log4r class SyslogOutputter < Outputter def initialize(_name, hash={}) super(_name, hash) end ########## # constants from syslog.c, just bogus values for windows LOG_PID = 0 LOG_CONS = 1 LOG_ODELAY = 2 LOG_NDELAY = 3 LOG_NOWAIT = 4 LOG_PERROR = 5 LOG_AUTH = 6 LOG_AUTHPRIV = 7 LOG_CONSOLE = 8 LOG_CRON = 9 LOG_DAEMON = 10 LOG_FTP = 11 LOG_KERN = 12 LOG_LPR = 13 LOG_MAIL = 14 LOG_NEWS = 15 LOG_NTP = 16 LOG_SECURITY = 17 LOG_SYSLOG = 18 LOG_USER = 19 LOG_UUCP = 20 LOG_LOCAL0 = 21 LOG_LOCAL1 = 22 LOG_LOCAL2 = 23 LOG_LOCAL3 = 24 LOG_LOCAL4 = 25 LOG_LOCAL5 = 26 LOG_LOCAL6 = 27 LOG_LOCAL7 = 28 LOG_EMERG = 29 LOG_ALERT = 30 LOG_CRIT = 31 LOG_ERR = 32 LOG_WARNING = 33 LOG_NOTICE = 34 LOG_INFO = 35 LOG_DEBUG = 36 def closed? @level == OFF end def close @level = OFF OutputterFactory.create_methods(self) end end end end