lib/oversip/syslogger_process.rb in oversip-1.1.0.beta2 vs lib/oversip/syslogger_process.rb in oversip-1.1.0.beta3
- old
+ new
@@ -1,10 +1,5 @@
-# Ruby built-in libraries.
-
-require "syslog"
-
-
# Ruby external gems.
gem "eventmachine-le", ">= 1.1.2"
require "eventmachine-le"
gem "em-posixmq", ">= 0.2.3"
@@ -19,59 +14,27 @@
module OverSIP
module SysLoggerProcess
- SYSLOG_FACILITY_MAPPING = {
- "kern" => ::Syslog::LOG_KERN,
- "user" => ::Syslog::LOG_USER,
- "daemon" => ::Syslog::LOG_DAEMON,
- "local0" => ::Syslog::LOG_LOCAL0,
- "local1" => ::Syslog::LOG_LOCAL1,
- "local2" => ::Syslog::LOG_LOCAL2,
- "local3" => ::Syslog::LOG_LOCAL3,
- "local4" => ::Syslog::LOG_LOCAL4,
- "local5" => ::Syslog::LOG_LOCAL5,
- "local6" => ::Syslog::LOG_LOCAL6,
- "local7" => ::Syslog::LOG_LOCAL7
- }
-
class SysLoggerWatcher < ::EM::PosixMQ::Watcher
def receive_message string, priority
- level = string.getbyte 0
- msg = string[1..-1].gsub(/%/,"%%").gsub(/\x00/,"")
-
- case level
- when 48 # "0" =>DEBUG
- ::Syslog.debug sprintf("%7s %s", "DEBUG:", msg)
- when 49 # "1" => INFO
- ::Syslog.info sprintf("%7s %s", "INFO:", msg)
- when 50 # "2" => NOTICE
- ::Syslog.notice sprintf("%7s %s", "NOTICE:", msg)
- when 51 # "3" => WARN
- ::Syslog.warning sprintf("%7s %s", "WARN:", msg)
- when 52 # "4" => ERR
- ::Syslog.err sprintf("%7s %s", "ERROR:", msg)
- when 53 # "5" => CRIT
- ::Syslog.crit sprintf("%7s %s", "CRIT:", msg)
- when 54 # "6" => ALERT
- ::Syslog.alert sprintf("%7s %s", "ALERT:", msg)
- when 55 # "7" => EMERG
- ::Syslog.emerg sprintf("%7s %s", "EMERG:", msg)
- else # Shouldn't occur.
- ::Syslog.err sprintf("%7s %s", "UNKNOWN:", msg)
- end
+ ::OverSIP::Syslog.log string
end
end # class SysLoggerWatcher
def self.run options={}
$0 = ::OverSIP.master_name + "_syslogger"
+ # Close Ruby Syslog open in the main process before forking.
+ ::Syslog.close
+
+ # Run a new Ruby Syslog.
syslog_options = ::Syslog::LOG_PID | ::Syslog::LOG_NDELAY
- syslog_facility = SYSLOG_FACILITY_MAPPING[::OverSIP.configuration[:core][:syslog_facility]]
+ syslog_facility = ::OverSIP::Syslog::SYSLOG_FACILITY_MAPPING[::OverSIP.configuration[:core][:syslog_facility]]
::Syslog.open(::OverSIP.master_name, syslog_options, syslog_facility)
ppid = ::Process.ppid
at_exit do
@@ -85,10 +48,10 @@
::EM::PosixMQ.run syslogger_mq, SysLoggerWatcher
# Change process permissions if requested.
::OverSIP::Launcher.set_user_group(options[:user], options[:group])
- rescue => e
+ rescue ::Exception => e
::Syslog.crit sprintf("%7s %s", "CRIT:", "<syslogger> #{e.class}: #{e}")
::Syslog.crit sprintf("%7s %s", "CRIT:", "<syslogger> syslogger process terminated")
exit! 1
end