LoginSignup
1
0

Rails.logger.log は Rails.logger.add と違って7.0以下だとbroadcastされない

Last updated at Posted at 2024-03-06

標準の Logger#addLogger#log の aliasだけど、 Rails 7.1系未満の ActiveSupport::Logger だとaddlogは挙動が違っていて、 ActiveSupport::Logger#add は broadcast されるが、 ActiveSupport::Logger#log だと broadcast されない。

# 設定次第だけど
# 標準出力とログファイルに出る
Rails.logger.add(1, 'hello') 
# ログファイルだけに出る
Rails.logger.log(1, 'hello') 

v6.1.7.7 activesupport/lib/active_support/logger.rbをみてみると、6系はこんな感じで add だけがオーバーライドされてる。 log は標準 Logger と同じ動きをするはず。

        define_method(:add) do |*args, &block|
          logger.add(*args, &block)
          super(*args, &block)
        end

v7.1.3.2 activesupport/lib/active_support/broadcast_logger.rbをみてみるとはaddlogがaliasになってる

    def add(*args, &block)
      dispatch { |logger| logger.add(*args, &block) }
    end
    alias_method :log, :add

https://github.com/rails/rails/pull/48615
このPRで入ったみたい。このPRは7.1系のものなので、7.0系もたぶん6系と同じ挙動するはず。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0