class SyslogLogDev

Public Class Methods

new(program_name, facility = 'daemon', log_to_stderr = false) click to toggle source
# File lib/unicorn-cuba-base/root_logger.rb, line 148
def initialize(program_name, facility = 'daemon', log_to_stderr = false)
        require 'syslog'

        facility = "LOG_#{facility.upcase}".to_sym
        Syslog.constants.include? facility or fail "No such syslog facility: #{facility}"
        facility = Syslog.const_get facility

        @log_level_mapping = Hash[%w{DEBUG INFO WARN ERROR FATAL}.zip(
                [Syslog::LOG_DEBUG, Syslog::LOG_INFO, Syslog::LOG_WARNING, Syslog::LOG_ERR, Syslog::LOG_CRIT]
        )]
        @log_level_mapping.default = Syslog::LOG_NOTICE

        flags = Syslog::LOG_PID | Syslog::LOG_NDELAY

        if log_to_stderr
                STDERR.sync = true
                flags |= Syslog::LOG_PERROR
        end

        @syslog = Syslog.open(program_name, flags, facility)
end

Public Instance Methods

close() click to toggle source
# File lib/unicorn-cuba-base/root_logger.rb, line 175
def close
        @syslog.close
end
write(msg) click to toggle source
# File lib/unicorn-cuba-base/root_logger.rb, line 170
def write(msg)
        log_level, msg = *msg.match(/([^ ]+) (.*)/m).captures
        @syslog.log(@log_level_mapping[log_level], "%s", msg.chomp)
end