diff --git a/CHANGELOG.md b/CHANGELOG.md index f6fe540..999e8ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Change log +## Unreleased + +### Fixed + +* Fix console and stream handlers to respect logger runtime log-level changes + ## [v0.6.0] - 2020-12-05 ### Added diff --git a/lib/tty/logger/handlers/console.rb b/lib/tty/logger/handlers/console.rb index 23008bb..29698d6 100644 --- a/lib/tty/logger/handlers/console.rb +++ b/lib/tty/logger/handlers/console.rb @@ -73,10 +73,6 @@ class Console # @api private attr_reader :config - # The logging level - # @api private - attr_reader :level - # The format for the message # @api private attr_reader :message_format @@ -89,7 +85,7 @@ def initialize(output: $stderr, formatter: nil, config: nil, level: nil, @color_pattern = COLOR_PATTERNS[@formatter_name.to_sym] @config = config @styles = styles - @level = level || @config.level + @level = level @mutex = Mutex.new @pastel = Pastel.new(enabled: enable_color) @message_format = message_format @@ -145,6 +141,11 @@ def call(event) @mutex.unlock end + # @api private + def level + @level || @config.level + end + private def format_backtrace(event) diff --git a/lib/tty/logger/handlers/stream.rb b/lib/tty/logger/handlers/stream.rb index 53101fd..2937393 100644 --- a/lib/tty/logger/handlers/stream.rb +++ b/lib/tty/logger/handlers/stream.rb @@ -12,13 +12,11 @@ class Stream attr_reader :config - attr_reader :level - def initialize(output: $stderr, formatter: nil, config: nil, level: nil) @output = Array[output].flatten @formatter = coerce_formatter(formatter || config.formatter).new @config = config - @level = level || @config.level + @level = level @mutex = Mutex.new end @@ -57,6 +55,10 @@ def call(event) ensure @mutex.unlock end + + def level + @level || @config.level + end end # Stream end # Handlers end # Logger diff --git a/spec/unit/handler_spec.rb b/spec/unit/handler_spec.rb index 04f3b08..a7923fb 100644 --- a/spec/unit/handler_spec.rb +++ b/spec/unit/handler_spec.rb @@ -111,6 +111,27 @@ ].join) end + it "respects logger instance-level log level configuration changes" do + logger = TTY::Logger.new(output: output) do |config| + config.handlers = [ + [:console, enable_color: false] + ] + config.level = :warn + end + + logger.configure do |config| + config.level = :info + end + + logger.info("Info") + logger.error("Error") + + expect(output.string).to eq([ + "#{styles[:info][:symbol]} info Info \n", + "#{styles[:error][:symbol]} error Error \n", + ].join) + end + it "fails to coerce unknown object type into handler object" do expect { TTY::Logger.new do |config| diff --git a/spec/unit/handlers/stream_spec.rb b/spec/unit/handlers/stream_spec.rb index 636c49a..0a812b2 100644 --- a/spec/unit/handlers/stream_spec.rb +++ b/spec/unit/handlers/stream_spec.rb @@ -71,4 +71,22 @@ "\"level\":\"info\",\"message\":\"Successfully deployed\"}\n" ].join) end + + it "respects logger instance-level log level configuration changes" do + logger = TTY::Logger.new(output: output) do |config| + config.handlers = [:stream] + end + + logger.configure do |config| + config.level = :debug + end + + logger.info("Successfully deployed") + logger.debug("A debug message") + + expect(output.string).to eq([ + "level=info message=\"Successfully deployed\"\n", + "level=debug message=\"A debug message\"\n", + ].join) + end end