class Flapjack::Logger
Constants
- LEVELS
- SEVERITY_LABELS
- SYSLOG_LEVELS
Public Class Methods
new(name, config = {})
click to toggle source
# File lib/flapjack/logger.rb, line 42 def initialize(name, config = {}) config ||= {} @name = name @formatter = proc do |severity, datetime, progname, msg| t = datetime.iso8601(6) "#{t} [#{severity}] :: #{@name} :: #{msg}\n" end output = if config[:file].nil? || config[:file].empty? || !File.exists?(File.dirname(config[:file])) || !File.writable?(File.dirname(config[:file])) || (File.exists?(config[:file]) && !File.writable?(config[:file])) STDOUT else config[:file] end @logger = ::Logger.new(output) @logger.formatter = @formatter configure(config) end
syslog_add(severity, message, name)
click to toggle source
# File lib/flapjack/logger.rb, line 100 def self.syslog_add(severity, message, name) @lock ||= Monitor.new @lock.synchronize do level = SYSLOG_LEVELS[severity] t = Time.now.iso8601 l = SEVERITY_LABELS[severity] begin Syslog.open('flapjack', (Syslog::Constants::LOG_PID | Syslog::Constants::LOG_CONS), Syslog::Constants::LOG_USER) Syslog.mask = Syslog::LOG_UPTO(::Syslog::Constants::LOG_ERR) Syslog.log(level, "#{t} [#{l}] :: #{name} :: %s", message) ensure Syslog.close end end end
Public Instance Methods
add(severity, message = nil, progname = nil) { || ... }
click to toggle source
# File lib/flapjack/logger.rb, line 117 def add(severity, message = nil, progname = nil, &block) raise "Cannot log with a closed logger" if @logger.nil? @logger.add(severity, message, progname, &block) if severity >= @level progname ||= 'flapjack' if message.nil? if block_given? message = yield else message = progname progname = 'flapjack' end end end Flapjack::Logger.syslog_add(severity, message, @name) if @use_syslog end
close()
click to toggle source
# File lib/flapjack/logger.rb, line 94 def close raise "Already closed" if @logger.nil? @logger.close @logger = nil end
configure(config)
click to toggle source
# File lib/flapjack/logger.rb, line 68 def configure(config) raise "Cannot configure closed logger" if @logger.nil? level = config['level'] # we'll let Logger spit the dummy on invalid level values -- but will # assume INFO if nothing is provided if level.nil? || level.empty? level = 'INFO' end err = nil @level = begin ::Logger.const_get(level.upcase) rescue NameError err = "Unknown Logger severity level '#{level.upcase}', using INFO..." ::Logger::INFO end @logger.error(err) if err @logger.level = @level @use_syslog = config.has_key?('syslog_errors') && config['syslog_errors'] end
respond_to?(sym)
click to toggle source
# File lib/flapjack/logger.rb, line 141 def respond_to?(sym) (LEVELS + [:configure, :close, :add]).include?(sym) end