class Siba::SibaLogger
Constants
- LogLevels
Attributes
messages[RW]
no_log[RW]
quiet[RW]
verbose[RW]
file[RW]
file_log[RW]
loggers[RW]
name[RW]
show_finish_message[RW]
stdout_log[RW]
strlog[RW]
Public Class Methods
check_log_level(level)
click to toggle source
# File lib/siba/siba_logger.rb, line 15 def check_log_level(level) raise "Unsupported log level '#{level}'" unless SibaLogger::log_level? level end
count(severity=nil, exact_level=true)
click to toggle source
# File lib/siba/siba_logger.rb, line 24 def count(severity=nil, exact_level=true) return 0 if SibaLogger.messages.nil? return SibaLogger.messages.size if severity.nil? severity_i = SibaLogger.level_to_i severity SibaLogger.messages.count do |i| if exact_level i.level == severity_i else i.level >= severity_i end end end
count_messages(msg, severity=nil, exact_level=true)
click to toggle source
returns the number of log messages that contain given msg text
# File lib/siba/siba_logger.rb, line 38 def count_messages(msg, severity=nil, exact_level=true) return 0 if SibaLogger.messages.nil? severity_i = SibaLogger.level_to_i severity unless severity.nil? SibaLogger.messages.count do |i| match_level = true if severity_i if exact_level match_level = i.level == severity_i else match_level = i.level >= severity_i end end if match_level !((i.msg =~ /#{msg}/).nil?) else false end end end
level_to_i(level)
click to toggle source
# File lib/siba/siba_logger.rb, line 19 def level_to_i(level) check_log_level level SibaLogger::LogLevels.index level end
log_level?(level)
click to toggle source
# File lib/siba/siba_logger.rb, line 11 def log_level?(level) SibaLogger::LogLevels.include? level end
new(name, path_to_log_file, show_start_message = true)
click to toggle source
# File lib/siba/siba_logger.rb, line 61 def initialize(name, path_to_log_file, show_start_message = true) @show_finish_message = true @name = name SibaLogger.messages = [] @loggers = [] @strlog = StringIO.new @loggers << Logger.new(@strlog) unless SibaLogger.quiet @stdout_log = Logger.new(STDOUT) @loggers << stdout_log end unless path_to_log_file.nil? || SibaLogger.no_log @file = File.open(path_to_log_file, "a:utf-8") @file_log = Logger.new(file) @loggers << file_log end @loggers.each do |logger| logger.formatter = method(:formatter) end file_log.info " ||----------NEW LOG----------|| || #{Time.now} || ||---------------------------|| " unless file_log.nil? info "#{name} started" if show_start_message end
Public Instance Methods
close()
click to toggle source
# File lib/siba/siba_logger.rb, line 98 def close if show_finish_message if SibaLogger.count('fatal') > 0 info "#{name} failed" elsif SibaLogger.count('warn', false) == 0 info "#{name} finished successfully" else info "#{name} completed with some issues" end end unless file.nil? file.close end unless file_log.nil? file_log.close end @loggers = [] @strlog = nil @file_log = nil @file = nil @stdout_log = nil end
log_exception(exception, log_only_backtrace=false)
click to toggle source
# File lib/siba/siba_logger.rb, line 127 def log_exception(exception, log_only_backtrace=false) log('debug',exception.message) unless log_only_backtrace unless exception.backtrace.nil? log('debug',"\n--- stack trace ---\n#{exception.backtrace.join("\n")}\n--- stack trace ---") end end
method_missing(meth, *args, &block)
click to toggle source
Calls superclass method
# File lib/siba/siba_logger.rb, line 134 def method_missing(meth, *args, &block) if SibaLogger::log_level? meth.to_s log(meth.to_s, *args, &block) else super end end
respond_to?(meth)
click to toggle source
Calls superclass method
# File lib/siba/siba_logger.rb, line 142 def respond_to?(meth) if SibaLogger::log_level? meth.to_s true else super end end
to_s()
click to toggle source
# File lib/siba/siba_logger.rb, line 94 def to_s strlog.string end
warn(*args, &block)
click to toggle source
# File lib/siba/siba_logger.rb, line 123 def warn(*args, &block) log('warn', *args, &block) end
Private Instance Methods
formatter(severity, datetime, progname, msg)
click to toggle source
# File lib/siba/siba_logger.rb, line 178 def formatter(severity, datetime, progname, msg) if ["INFO", "DEBUG"].include? severity severity = "" else severity = "WARNING" if severity == "WARN" severity += " - " end "#{severity}#{msg}\n" end
log(level, *args, &block)
click to toggle source
# File lib/siba/siba_logger.rb, line 153 def log(level, *args, &block) raise Siba::Error, "Log is closed" if loggers.empty? level_i = SibaLogger::level_to_i level unless block.nil? msg = block.call.to_s else assert "Wrong number of arguments" if args.size != 1 msg = args[0].to_s end log_message = LogMessage.new log_message.level = level_i log_message.time = Time.now log_message.msg = msg SibaLogger.messages << log_message loggers.each do |l| l.send(level, msg) unless l == stdout_log end unless stdout_log.nil? stdout_log.send(level, EncodingHelper.encode_to_external(msg)) unless level == 'debug' && !SibaLogger.verbose end end