lib/syslogger.rb in syslogger-1.2.0 vs lib/syslogger.rb in syslogger-1.2.1

- old
+ new

@@ -1,26 +1,39 @@ require 'syslog' require 'logger' class Syslogger + + VERSION = "1.2.1" + attr_reader :level, :ident, :options, :facility - + MAPPING = { Logger::DEBUG => Syslog::LOG_DEBUG, Logger::INFO => Syslog::LOG_INFO, Logger::WARN => Syslog::LOG_NOTICE, Logger::ERROR => Syslog::LOG_WARNING, Logger::FATAL => Syslog::LOG_ERR, Logger::UNKNOWN => Syslog::LOG_ALERT } + # # Initializes default options for the logger - # <tt>ident</tt>:: the name of your program [default=$0] - # <tt>options</tt>:: Syslog options [default=Syslog::LOG_PID | Syslog::LOG_CONS] - # <tt>facility</tt>:: the syslog facility [default=nil] - # - # correct values are Syslog::LOG_DAEMON, Syslog::LOG_USER, Syslog::LOG_SYSLOG, Syslog::LOG_LOCAL2, Syslog::LOG_NEWS, etc. + # <tt>ident</tt>:: the name of your program [default=$0]. + # <tt>options</tt>:: syslog options [default=<tt>Syslog::LOG_PID | Syslog::LOG_CONS</tt>]. + # Correct values are: + # LOG_CONS : writes the message on the console if an error occurs when sending the message; + # LOG_NDELAY : no delay before sending the message; + # LOG_PERROR : messages will also be written on STDERR; + # LOG_PID : adds the process number to the message (just after the program name) + # <tt>facility</tt>:: the syslog facility [default=nil] Correct values include: + # Syslog::LOG_DAEMON + # Syslog::LOG_USER + # Syslog::LOG_SYSLOG + # Syslog::LOG_LOCAL2 + # Syslog::LOG_NEWS + # etc. # # Usage: # logger = Syslogger.new("my_app", Syslog::LOG_PID | Syslog::LOG_CONS, Syslog::LOG_LOCAL0) # logger.level = Logger::INFO # use Logger levels # logger.warn "warning message" @@ -35,23 +48,37 @@ %w{debug info warn error fatal unknown}.each do |logger_method| define_method logger_method.to_sym do |message| add(Logger.const_get(logger_method.upcase), message) end + + unless logger_method == 'unknown' + define_method "#{logger_method}?".to_sym do + @level <= Logger.const_get(logger_method.upcase) + end + end end + # Logs a message at the Logger::INFO level. def <<(msg) add(Logger::INFO, msg) end + # Low level method to add a message. + # +severity+:: the level of the message. One of Logger::DEBUG, Logger::INFO, Logger::WARN, Logger::ERROR, Logger::FATAL, Logger::UNKNOWN + # +message+:: the message string. If nil, the method will call the block and use the result as the message string. + # +progname+:: optionally, a overwrite the program name that appears in the log message. def add(severity, message = nil, progname = nil, &block) progname ||= @ident Syslog.open(progname, @options, @facility) { |s| s.mask = Syslog::LOG_UPTO(MAPPING[@level]) - s.log(MAPPING[severity], (message || block.call)) + s.log(MAPPING[severity], (message || block.call).to_s) } end - def level=(logger_level) - @level = logger_level + # Sets the minimum level for messages to be written in the log. + # +level+:: one of <tt>Logger::DEBUG</tt>, <tt>Logger::INFO</tt>, <tt>Logger::WARN</tt>, <tt>Logger::ERROR</tt>, <tt>Logger::FATAL</tt>, <tt>Logger::UNKNOWN</tt> + def level=(level) + @level = level end + end \ No newline at end of file