lib/akaer/logger.rb in akaer-0.1.0 vs lib/akaer/logger.rb in akaer-0.3.0
- old
+ new
@@ -2,29 +2,57 @@
#
# This file is part of the akaer gem. Copyright (C) 2012 and above Shogun <shogun_panda@me.com>.
# Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
#
+Sickill::Rainbow.enabled = true
+
module Akaer
class Logger < ::Logger
- mattr_accessor :start_time
+ mattr_accessor :global_start_time
+ attr_accessor :start_time
def initialize(logdev, shift_age = 0, shift_size = 1048576)
super(logdev, shift_age, shift_size)
+ end
- self.formatter = Proc.new {|severity, datetime, progname, msg|
+ def self.create(file, level = Logger::INFO, formatter = nil)
+ rv = self.new(self.get_real_file(file))
+ rv.level = level.to_i
+ rv.formatter = formatter || self.default_formatter
+ rv
+ end
+
+ def self.get_real_file(file)
+ case file
+ when "STDOUT" then $stdout
+ when "STDERR" then $stderr
+ else file
+ end
+ end
+
+ def self.default_file
+ $stdout
+ end
+
+ def self.default_formatter
+ Proc.new {|severity, datetime, progname, msg|
color = case severity
when "DEBUG" then :cyan
when "INFO" then :green
when "WARN" then :yellow
when "ERROR" then :red
when "FATAL" then :magenta
else nil
end
- header = ("[%s T+%0.5f]" %[datetime.strftime("%Y/%b/%d %H:%M:%S"), datetime.to_f - @@start_time.to_f, msg]).bright
+ header = ("[%s T+%0.5f] %s:" %[datetime.strftime("%Y/%b/%d %H:%M:%S"), [datetime.to_f - self.start_time.to_f, 0].max, severity.rjust(5)]).bright
header = header.color(color) if color.present?
- log = "%s %s\n" % [header, msg]
+ "%s %s\n" % [header, msg]
}
end
+
+ def self.start_time
+ @start_time ||= Time.now
+ end
end
-end
\ No newline at end of file
+end