Skip to content

Commit bbf6a36

Browse files
authored
Merge pull request rails#50337 from Edouard-chin/ec-log-level
Fix `config.log_level` being ignored when using a Broadcast Logger
2 parents 860ea32 + b6bb506 commit bbf6a36

File tree

3 files changed

+41
-3
lines changed

3 files changed

+41
-3
lines changed

railties/lib/rails/application/bootstrap.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,11 @@ module Bootstrap
5555
logger
5656
end
5757

58-
unless Rails.logger.is_a?(ActiveSupport::BroadcastLogger)
58+
if Rails.logger.is_a?(ActiveSupport::BroadcastLogger)
59+
if config.broadcast_log_level
60+
Rails.logger.level = ActiveSupport::Logger.const_get(config.broadcast_log_level.to_s.upcase)
61+
end
62+
else
5963
Rails.logger.level = ActiveSupport::Logger.const_get(config.log_level.to_s.upcase)
6064
broadcast_logger = ActiveSupport::BroadcastLogger.new(Rails.logger)
6165
broadcast_logger.formatter = Rails.logger.formatter

railties/lib/rails/application/configuration.rb

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,13 @@ class Configuration < ::Rails::Engine::Configuration
1919
:ssl_options, :public_file_server,
2020
:session_options, :time_zone, :reload_classes_only_on_change,
2121
:beginning_of_week, :filter_redirect, :x,
22-
:read_encrypted_secrets, :log_level, :content_security_policy_report_only,
22+
:read_encrypted_secrets, :content_security_policy_report_only,
2323
:content_security_policy_nonce_generator, :content_security_policy_nonce_directives,
2424
:require_master_key, :credentials, :disable_sandbox, :sandbox_by_default,
2525
:add_autoload_paths_to_load_path, :rake_eager_load, :server_timing, :log_file_size,
2626
:dom_testing_default_html_version
2727

28-
attr_reader :encoding, :api_only, :loaded_config_version
28+
attr_reader :encoding, :api_only, :loaded_config_version, :log_level
2929

3030
def initialize(*)
3131
super
@@ -373,6 +373,15 @@ def api_only=(value)
373373
@debug_exception_response_format ||= :api
374374
end
375375

376+
def log_level=(level)
377+
@log_level = level
378+
@broadcast_log_level = level
379+
end
380+
381+
def broadcast_log_level # :nodoc:
382+
defined?(@broadcast_log_level) ? @broadcast_log_level : nil
383+
end
384+
376385
def debug_exception_response_format
377386
@debug_exception_response_format || :default
378387
end

railties/test/application/configuration_test.rb

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1929,6 +1929,31 @@ def index
19291929
assert_equal Logger::DEBUG, Rails.logger.level
19301930
end
19311931

1932+
test "config.log_level does not override the level of the broadcast with the default value" do
1933+
add_to_config <<-RUBY
1934+
stdout = Logger.new(STDOUT, level: Logger::INFO)
1935+
stderr = Logger.new(STDERR, level: Logger::ERROR)
1936+
config.logger = ActiveSupport::BroadcastLogger.new(stdout, stderr)
1937+
RUBY
1938+
1939+
app "development"
1940+
1941+
assert_equal([Logger::INFO, Logger::ERROR], Rails.logger.broadcasts.map(&:level))
1942+
end
1943+
1944+
test "config.log_level overrides the level of the broadcast when a custom value is set" do
1945+
add_to_config <<-RUBY
1946+
stdout = Logger.new(STDOUT)
1947+
stderr = Logger.new(STDERR)
1948+
config.logger = ActiveSupport::BroadcastLogger.new(stdout, stderr)
1949+
config.log_level = :warn
1950+
RUBY
1951+
1952+
app "development"
1953+
1954+
assert_equal([Logger::WARN, Logger::WARN], Rails.logger.broadcasts.map(&:level))
1955+
end
1956+
19321957
test "config.logger when logger is already a Broadcast Logger" do
19331958
logger = ActiveSupport::BroadcastLogger.new
19341959

0 commit comments

Comments
 (0)