From 37f673560aeede9803c8ef8d6ef7099c6371dcd2 Mon Sep 17 00:00:00 2001 From: Joe Rafaniello Date: Tue, 4 Feb 2025 14:19:12 -0500 Subject: [PATCH] Fix Logger subclasses providing no default logdev Logger.new requires a log device as the first argument. Normalized the other loggers to match the Logger#initialize interface for consistency. Fixes the following bug: irb(main):001> ManageIQ::Loggers::Base.new xxx/.rubies/ruby-3.3.6/lib/ruby/3.3.0/logger.rb:578:in `initialize': wrong number of arguments (given 0, expected 1..3) (ArgumentError) from manageiq-loggers (1.2.0) lib/manageiq/loggers/base.rb:27:in `initialize' irb(main):002> ManageIQ::Loggers::JSONLogger.new xxx/.rubies/ruby-3.3.6/lib/ruby/3.3.0/logger.rb:578:in `initialize': wrong number of arguments (given 0, expected 1..3) (ArgumentError) from manageiq-loggers (1.2.0) lib/manageiq/loggers/base.rb:27:in `initialize' from manageiq-loggers (1.2.0) lib/manageiq/loggers/json_logger.rb:5:in `initialize' --- lib/manageiq/loggers/base.rb | 2 +- lib/manageiq/loggers/json_logger.rb | 2 +- spec/manageiq/base_spec.rb | 4 ++++ spec/manageiq/container_spec.rb | 4 ++++ spec/manageiq/journald_spec.rb | 4 ++++ spec/manageiq/json_logger_spec.rb | 4 ++++ 6 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/manageiq/loggers/base.rb b/lib/manageiq/loggers/base.rb index c05a27c..4804e99 100644 --- a/lib/manageiq/loggers/base.rb +++ b/lib/manageiq/loggers/base.rb @@ -23,7 +23,7 @@ def wrap(source, *loggers) end end - def initialize(*_, **_) + def initialize(_logdev = nil, *_, **_) super self.level = INFO diff --git a/lib/manageiq/loggers/json_logger.rb b/lib/manageiq/loggers/json_logger.rb index be202c6..370c6c2 100644 --- a/lib/manageiq/loggers/json_logger.rb +++ b/lib/manageiq/loggers/json_logger.rb @@ -1,7 +1,7 @@ module ManageIQ module Loggers class JSONLogger < Base - def initialize(*_, **_) + def initialize(_logdev = nil, *_, **_) super self.formatter = Formatter.new end diff --git a/spec/manageiq/base_spec.rb b/spec/manageiq/base_spec.rb index 4929d50..c52719f 100644 --- a/spec/manageiq/base_spec.rb +++ b/spec/manageiq/base_spec.rb @@ -10,6 +10,10 @@ described_class.instance_variable_set("@log_hashes_filter", nil) end + it "provides nil default log device" do + expect(described_class.new.logdev).to eq nil + end + it "logs a message" do logger.info(message) diff --git a/spec/manageiq/container_spec.rb b/spec/manageiq/container_spec.rb index 064f7ec..b2433bc 100644 --- a/spec/manageiq/container_spec.rb +++ b/spec/manageiq/container_spec.rb @@ -6,6 +6,10 @@ let(:logger) { described_class.new } let(:message) { "testing 1, 2, 3" } + it "provides a default log device" do + expect(described_class.new.logdev).to be_kind_of(Logger::LogDevice) + end + it "writes to STDOUT by default" do expect { logger.info(message) }.to output.to_stdout end diff --git a/spec/manageiq/journald_spec.rb b/spec/manageiq/journald_spec.rb index 645ed9d..dcdbd52 100644 --- a/spec/manageiq/journald_spec.rb +++ b/spec/manageiq/journald_spec.rb @@ -1,6 +1,10 @@ RSpec.describe ManageIQ::Loggers::Journald, :linux do let(:logger) { described_class.new } + it "provides nil default log device" do + expect(described_class.new.logdev).to eq nil + end + context "progname" do it "sets the progname to manageiq by default" do expect(logger.progname).to eq("manageiq") diff --git a/spec/manageiq/json_logger_spec.rb b/spec/manageiq/json_logger_spec.rb index dd7da32..4d4d2ac 100644 --- a/spec/manageiq/json_logger_spec.rb +++ b/spec/manageiq/json_logger_spec.rb @@ -3,6 +3,10 @@ let(:logger) { described_class.new(buffer) } let(:message) { "testing 1, 2, 3" } + it "provides nil default log device" do + expect(described_class.new.logdev).to eq nil + end + it "logs a message in JSON format" do logger.info(message)