Class: SyslogLogDev

Inherits:
Object
  • Object
show all
Defined in:
lib/unicorn-cuba-base/root_logger.rb

Instance Method Summary collapse

Constructor Details

#initialize(program_name, facility = 'daemon', log_to_stderr = false) ⇒ SyslogLogDev

Returns a new instance of SyslogLogDev.



148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
# 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

Instance Method Details

#closeObject



175
176
177
# File 'lib/unicorn-cuba-base/root_logger.rb', line 175

def close
	@syslog.close
end

#write(msg) ⇒ Object



170
171
172
173
# 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