[Groonga-commit] droonga/droonga-engine at 7c5238b [master] Implement logger

Back to archive index

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 



More information about the Groonga-commit mailing list
Back to archive index