def initialize(*options)
options.each do |option|
if option.is_a?(String)
@ident = option
elsif value = self.class.syslog_facility(option)
@facility = value
elsif value = self.class.syslog_level(option)
@level = value
elsif value = self.class.syslog_option(option)
@options = 0 if @options.nil?
@options |= value
elsif option.is_a?(IO)
@out = option
else
raise ArgumentError, "Unknown argument #{option.inspect}"
end
end
@options ||= 0
@ident ||= $0.sub(/.*\//, '')
@facility ||= Syslog::LOG_USER
@level ||= Syslog::LOG_INFO
if Syslog.opened? then
options = Syslog.options | @options
@syslog = Syslog.reopen(@ident, options, @facility)
else
@syslog = Syslog.open(@ident, @options, @facility)
end
@subs = []
@sync = false
@buffer = ''
at_exit { flush }
end