From 01c508d6152e8323cf62de80fee9bae50884c560 Mon Sep 17 00:00:00 2001 From: Dmitry Goncharuk Date: Tue, 7 Sep 2021 09:57:57 +0300 Subject: [PATCH] Unify log-level helper methods behavior. --- lib/logdna.rb | 29 +++++++++++------------------ lib/logdna/resources.rb | 4 +++- test/tests.rb | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+), 19 deletions(-) diff --git a/lib/logdna.rb b/lib/logdna.rb index b480e41..a558929 100755 --- a/lib/logdna.rb +++ b/lib/logdna.rb @@ -19,9 +19,7 @@ class Ruby < ::Logger attr_accessor :app, :env, :meta def initialize(key, opts = {}) - super(nil, nil, nil) @app = opts[:app] || "default" - @log_level = opts[:level] || "INFO" @env = opts[:env] @meta = opts[:meta] @internal_logger = Logger.new($stdout) @@ -43,28 +41,25 @@ def initialize(key, opts = {}) request.basic_auth("username", key) request[:'user-agent'] = opts[:'user-agent'] || "ruby/#{LogDNA::VERSION}" @client = Logdna::Client.new(request, uri, opts) + + super(nil, nil, nil, level: opts[:level] || "INFO") end def default_opts { app: @app, - level: @log_level, + level: level, env: @env, meta: @meta, } end - def level - @log_level - end - def level=(value) - if value.is_a? Numeric - @log_level = Resources::LOG_LEVELS[value] - return - end + return super(value) if value.is_a?(Integer) - @log_level = value + return super(Resources::TRACE) if value.to_s.downcase == 'trace' + + super end def log(message = nil, opts = {}) @@ -89,17 +84,15 @@ def log(message = nil, opts = {}) level: lvl ), &block) end + end - define_method "#{name}?" do - return Resources::LOG_LEVELS[self.level] == lvl if level.is_a? Numeric - - self.level == lvl - end + def trace? + level <= Resources::TRACE end def clear @app = "default" - @log_level = "INFO" + level = Resources::LOG_LEVELS[1] @env = nil @meta = nil end diff --git a/lib/logdna/resources.rb b/lib/logdna/resources.rb index 98d7059..55d6b60 100755 --- a/lib/logdna/resources.rb +++ b/lib/logdna/resources.rb @@ -1,7 +1,9 @@ # frozen_string_literal: true - +require 'logger' module Resources + TRACE = Logger::Severity::UNKNOWN LOG_LEVELS = %w[DEBUG INFO WARN ERROR FATAL TRACE].freeze + DEFAULT_REQUEST_HEADER = { "Content-Type" => "application/json; charset=UTF-8" }.freeze DEFAULT_REQUEST_TIMEOUT = 180_000 MS_IN_A_DAY = 86_400_000 diff --git a/test/tests.rb b/test/tests.rb index 705924f..dc6adbf 100644 --- a/test/tests.rb +++ b/test/tests.rb @@ -80,4 +80,43 @@ def test_all log_level_test("debug", 2003, "DEBUG") retry_test("fatal", 2004, "FATAL") end + + def test_log_level_helper_methods + debug_level_test + warn_level_test + trace_level_test + end + + def debug_level_test + logger = Logdna::Ruby.new("pp", level: "DEBUG") + + assert_equal(logger.debug?, true, "#debug? for 'DEBUG' level should be true") + assert_equal(logger.info?, true, "#info? for 'DEBUG' level should be true") + assert_equal(logger.warn?, true, "#warn? for 'DEBUG' level should be true") + assert_equal(logger.error?, true, "#error? for 'DEBUG' level should be true") + assert_equal(logger.fatal?, true, "#fatal? for 'DEBUG' level should be true") + assert_equal(logger.trace?, true, "#trace? for 'DEBUG' level should be true") + end + + def warn_level_test + logger = Logdna::Ruby.new("pp", level: "WARN") + + assert_equal(logger.debug?, false, "#debug? for 'WARN' level should be false") + assert_equal(logger.info?, false, "#info? for 'WARN' level should be false") + assert_equal(logger.warn?, true, "#warn? for 'WARN' level should be true") + assert_equal(logger.error?, true, "#error? for 'WARN' level should be true") + assert_equal(logger.fatal?, true, "#fatal? for 'WARN' level should be true") + assert_equal(logger.trace?, true, "#trace? for 'WARN' level should be true") + end + + def trace_level_test + logger = Logdna::Ruby.new("pp", level: "TRACE") + + assert_equal(logger.debug?, false, "#debug? for 'TRACE' level should be false") + assert_equal(logger.info?, false, "#info? for 'TRACE' level should be false") + assert_equal(logger.warn?, false, "#warn? for 'TRACE' level should be false") + assert_equal(logger.error?, false, "#error? for 'TRACE' level should be false") + assert_equal(logger.fatal?, false, "#fatal? for 'TRACE' level should be false") + assert_equal(logger.trace?, true, "#trace? for 'TRACE' level should be true") + end end