Skip to content

Commit 12f6ac0

Browse files
authored
Merge pull request rails#52868 from soulcutter/broadcast-logger-delegation
Allow BroadcastLogger to pass through kwargs
2 parents 446daa0 + 0aca87a commit 12f6ac0

File tree

2 files changed

+47
-14
lines changed

2 files changed

+47
-14
lines changed

activesupport/lib/active_support/broadcast_logger.rb

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -113,33 +113,33 @@ def <<(message)
113113
dispatch { |logger| logger.<<(message) }
114114
end
115115

116-
def add(*args, &block)
117-
dispatch { |logger| logger.add(*args, &block) }
116+
def add(...)
117+
dispatch { |logger| logger.add(...) }
118118
end
119119
alias_method :log, :add
120120

121-
def debug(*args, &block)
122-
dispatch { |logger| logger.debug(*args, &block) }
121+
def debug(...)
122+
dispatch { |logger| logger.debug(...) }
123123
end
124124

125-
def info(*args, &block)
126-
dispatch { |logger| logger.info(*args, &block) }
125+
def info(...)
126+
dispatch { |logger| logger.info(...) }
127127
end
128128

129-
def warn(*args, &block)
130-
dispatch { |logger| logger.warn(*args, &block) }
129+
def warn(...)
130+
dispatch { |logger| logger.warn(...) }
131131
end
132132

133-
def error(*args, &block)
134-
dispatch { |logger| logger.error(*args, &block) }
133+
def error(...)
134+
dispatch { |logger| logger.error(...) }
135135
end
136136

137-
def fatal(*args, &block)
138-
dispatch { |logger| logger.fatal(*args, &block) }
137+
def fatal(...)
138+
dispatch { |logger| logger.fatal(...) }
139139
end
140140

141-
def unknown(*args, &block)
142-
dispatch { |logger| logger.unknown(*args, &block) }
141+
def unknown(...)
142+
dispatch { |logger| logger.unknown(...) }
143143
end
144144

145145
def formatter=(formatter)

activesupport/test/broadcast_logger_test.rb

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,25 @@ def info(msg, &block)
307307
assert_equal true, @logger.error("Hello")
308308
end
309309

310+
Logger::Severity.constants.each do |level_name|
311+
method = level_name.downcase
312+
level = Logger::Severity.const_get(level_name)
313+
314+
test "##{method} delegates keyword arguments to loggers" do
315+
logger = BroadcastLogger.new(KwargsAcceptingLogger.new)
316+
317+
logger.public_send(method, "Hello", foo: "bar")
318+
assert_equal [[level, "{:foo=>\"bar\"} Hello", nil]], logger.broadcasts.sole.adds
319+
end
320+
end
321+
322+
test "#add delegates keyword arguments to the loggers" do
323+
logger = BroadcastLogger.new(KwargsAcceptingLogger.new)
324+
325+
logger.add(::Logger::INFO, "Hello", foo: "bar")
326+
assert_equal [[::Logger::INFO, "{:foo=>\"bar\"} Hello", nil]], logger.broadcasts.sole.adds
327+
end
328+
310329
class CustomLogger
311330
attr_reader :adds, :closed, :chevrons
312331
attr_accessor :level, :progname, :formatter, :local_level
@@ -401,5 +420,19 @@ class FakeLogger < CustomLogger
401420
# methods, so we need to redefine them
402421
attr_accessor :level, :local_level
403422
end
423+
424+
class KwargsAcceptingLogger < CustomLogger
425+
Logger::Severity.constants.each do |level_name|
426+
method = level_name.downcase
427+
define_method(method) do |message, **kwargs|
428+
add(Logger::Severity.const_get(level_name), "#{kwargs.inspect} #{message}")
429+
end
430+
end
431+
432+
def add(severity, message = nil, **kwargs)
433+
return super(severity, "#{kwargs.inspect} #{message}") if kwargs.present?
434+
super
435+
end
436+
end
404437
end
405438
end

0 commit comments

Comments
 (0)