lib/ztk/logger.rb in ztk-0.0.6 vs lib/ztk/logger.rb in ztk-0.0.7
- old
+ new
@@ -18,31 +18,28 @@
#
################################################################################
require "logger"
-################################################################################
-
module ZTK
-################################################################################
-
+ # @author Zachary Patten <zachary@jovelabs.com>
class Logger < ::Logger
-################################################################################
-
SEVERITIES = Severity.constants.inject([]) {|arr,c| arr[Severity.const_get(c)] = c; arr}
-################################################################################
-
def initialize(*args)
super(*args)
set_log_level
end
-################################################################################
+ private
+
+ # Parses caller entries, extracting the file, line number and method.
+ #
+ # @param [String] at Entry from the caller Array.
def parse_caller(at)
if /^(.+?):(\d+)(?::in `(.*)')?/ =~ at
file = Regexp.last_match[1]
line = Regexp.last_match[2]
method = Regexp.last_match[3]
@@ -50,38 +47,39 @@
else
""
end
end
-################################################################################
-
+ # Writes a log message if the current log level is at or below the supplied
+ # severity.
+ #
+ # @param [Constant] severity Log level severity.
+ # @param [String] message Optional message to prefix the log entry with.
+ # @param [String] progname Optional name of the program to prefix the log
+ # entry with.
+ # @yieldreturn [String] The block should return the desired log message.
def add(severity, message = nil, progname = nil, &block)
return if (@level > severity)
called_by = parse_caller(caller[1])
msg = (block && block.call)
(msg.nil? || msg.strip.empty?) and return
- message = [message, progname, msg].delete_if{ |i| i.nil? }.join(": ")
+ message = [message, progname, msg].flatten.compact.join(": ")
message = "%19s.%06d|%05d|%5s|%s%s\n" % [Time.now.utc.strftime("%Y-%m-%d|%H:%M:%S"), Time.now.utc.usec, Process.pid, SEVERITIES[severity], called_by, message]
@logdev.write(message)
true
end
-################################################################################
-
+ # Sets the log level.
+ #
+ # @param [String] level Log level to use.
def set_log_level(level=nil)
defined?(Rails) and (default = (Rails.env.production? ? "INFO" : "DEBUG")) or (default = "INFO")
log_level = (ENV['LOG_LEVEL'] || level || default)
self.level = ZTK::Logger.const_get(log_level.to_s.upcase)
end
-################################################################################
-
end
-################################################################################
-
end
-
-################################################################################