Kouhei Sutou
null+****@clear*****
Wed Apr 16 17:27:19 JST 2014
Kouhei Sutou 2014-04-16 17:27:19 +0900 (Wed, 16 Apr 2014) New Revision: 7c5238b2be8edcb3adb7d8c50ae539fca1572ae3 https://github.com/droonga/droonga-engine/commit/7c5238b2be8edcb3adb7d8c50ae539fca1572ae3 Message: Implement logger Modified files: lib/droonga/loggable.rb lib/droonga/logger.rb test/unit/run-test.rb Modified: lib/droonga/loggable.rb (+1 -1) =================================================================== --- lib/droonga/loggable.rb 2014-04-16 16:22:43 +0900 (1464d71) +++ lib/droonga/loggable.rb 2014-04-16 17:27:19 +0900 (5489df2) @@ -19,7 +19,7 @@ module Droonga module Loggable private def logger - @logger ||= Logger.new(:depth_offset => 1, :tag => log_tag) + @logger ||= Logger.new(:tag => log_tag) end def log_tag Modified: lib/droonga/logger.rb (+62 -15) =================================================================== --- lib/droonga/logger.rb 2014-04-16 16:22:43 +0900 (7a9343e) +++ lib/droonga/logger.rb 2014-04-16 17:27:19 +0900 (3105252) @@ -27,50 +27,97 @@ module Droonga end class Logger + module Level + TRACE = 0 + DEBUG = 1 + INFO = 2 + WARN = 3 + ERROR = 4 + FATAL = 5 + + LABELS = [ + "trace", + "debug", + "info", + "warn", + "error", + "fatal", + ] + + class << self + def lable(level) + LABELS[level] + end + end + end + def initialize(options={}) - @output = Fluent::PluginLogger.new($log) - depth_offset = options[:depth_offset] || 0 - @output.instance_variable_set(:@depth_offset, 4 + depth_offset) + @output = options[:output] || $stdout @tag = options[:tag] + @level = Level::INFO end def level - @output.level + Level.label(@level) + end + + def level=(level) + @level = Level::LABELS.index(level.to_s) end def trace(message, data={}) - log(:trace, message, data) + log(Level::TRACE, message, data) end def debug(message, data={}) - log(:debug, message, data) + log(Level::DEBUG, message, data) end def info(message, data={}) - log(:info, message, data) + log(Level::INFO, message, data) end def warn(message, data={}) - log(:warn, message, data) + log(Level::WARN, message, data) end def error(message, data={}) - log(:error, message, data) + log(Level::ERROR, message, data) end def exception(message, exception, data={}) - log(:error, + log(Level::Error, "#{message}: #{exception.message}(#{exception.class})", data) - @output.error_backtrace(exception.backtrace) + log_backtrace(Level::Error, exception.backtrace) end private def log(level, message, data) - message = "#{@tag}: #{message}" if @tag - arguments = [message] - arguments << data unless data.empty? - @output.send(level, *arguments) + return unless target_level?(level) + @output.print(build_log_line(message, data)) + end + + def log_backtrace(level, backtrace) + return unless target_level?(level) + backtrace.each do |message| + @output.write(build_log_line(message)) + end + end + + def target_level?(level) + @level <= level + end + + def build_log_line(level, message, data={}) + line = "#{Time.now.iso8601}[#{Level.label(level)}]: " + line << "#{@tag}: " if @tag + line << message + data.each do |key, value| + line << " #{key}=#{value.inspect}" + end + line << "\n" + line end end end Modified: test/unit/run-test.rb (+0 -11) =================================================================== --- test/unit/run-test.rb 2014-04-16 16:22:43 +0900 (cb9a704) +++ test/unit/run-test.rb 2014-04-16 17:27:19 +0900 (9991fc2) @@ -32,17 +32,6 @@ require "test-unit" require "test/unit/notify" require "test/unit/rr" -require "fluent/test" -unless ENV.has_key?("VERBOSE") - null_logger = Object.new - null_logger.instance_eval do |obj| - def method_missing(method, *args) - # pass - end - end - $log = null_logger -end - base_dir = File.expand_path(File.join(File.dirname(__FILE__), "..", "..")) lib_dir = File.join(base_dir, "lib") test_dir = File.join(base_dir, "test", "unit") -------------- next part -------------- HTML����������������������������... Download