Logger
参考:
ActiveSupport::Logger | Ruby on Rails API [Official]
使い方
参考:
Rails のログについて (Rails.logger) | 酒と涙とRubyとRailsと
バッチの実行ログを専用のログファイルと標準出力の両方に出す | おどるダメ人間
Rails で log を出力し debug する – Qiita
Rails 4.x 本番環境で SQL の実行ログを表示したい場合の設定 | GENDOSU@NET
Rails でログを出力してみる | yk5656 diary
Rails のログの読み方 | Reinvent Yourself
アプリで puts, logger コマンドを実行した時の log / 標準出力 について – Qiita
Rails でのログ / ロガーまとめ (ログ出力、ログレベル、ロガー作成、ログフォーマット) | Rails Webook
ログを出力する
logger.debug "[debug] test#index" logger.info "[info] test#index" logger.warn "[warn] test#index" logger.error "[error] test#index" logger.fatal "[fatal] test#index"
参考:
ruby の Logger でログを出力する方法 | それマグで!
ログに書き出すログレベルを変更する | Rails つまみぐい
ロガーの設定
config.logger = ActiveSupport::Logger.new( "log/development.log" ) config.log_level = :debug
参考:
ログに書き出すログレベルを変更する | Rails つまみぐい
ログレベルの設定
設定されている以上のレベルのログが出力される。
config.log_level = :debug
優先されるログレベルの順序は次の通り。
fatal > error > warn > info > debug
参考:
ログに書き出すログレベルを変更する | Rails つまみぐい
ログを出力しよう! Rails で便利な logger の使い方 | TechAcademy マガジン
アクセスログ
参考:
Rails でリクエストの HTTP ヘッダを取得してログに出力する | xyk のブログ
カニでもできる Rails でアクセスログ実装 | かにぱんのなく頃に
rails server のログでリクエストヘッダとレスポンスヘッダを表示する | how to code something
How to log specific request details to rails server logs – Stack Overflow
スタックトレースを出力する
参考:
Rails でログファイルに例外トレース情報を出す | ありの日記
Rails で例外発生時にフルスタックトレースをログに出すには? – teratail
ローテーション
参考:
ログ出力とログローテートの設定まとめ | きゃまなかのブログ
Rails で Logger を使って Log ローテション | DoRuby
Rails5 + Puma で logrotate | ポンコツ.log
ファイルサイズ
参考:
megabytes | Railsドキュメント (railsdoc.com)
megabytes – Numeric | Ruby on Rails API [Official]
Pretty file size in Ruby? – Stack Overflow
initialize_logger
参考:
initialize_logger – rails/bootstrap.rb at v5.2.3 · rails/rails – GitHub
silence
ブロック内のログレベルを変更する。
LoggerSilence#silence(temporary_level = Logger::ERROR)
デフォルト (引数なし) ではログレベルが error に設定され、warn / info / debug のログ出力が抑制される。
Rails.logger.silence do # warn/info/debug are silenced here end
参考:
silence – LoggerSilence | Ruby on Rails API [Official]
特定の条件で Rails のログ出力を抑止する – Qiita
How can I disable logging in Ruby on Rails on a per-action basis? – Stack Overflow
ActiveSupport::LogSubscriber
参考:
ActiveSupport::LogSubscriber | Ruby on Rails API [Official]
rails/log_subscriber.rb at 5-2-stable · rails/rails – GitHub
ActiveSupport::Subscriber
参考:
ActiveSupport::Subscriber | Ruby on Rails API [Official]
rails/subscriber.rb at 5-2-stable · rails/rails – GitHub
color
color(text, color, bold = false)
ログ出力用のテキストに色を付ける。
参考:
color – ActiveSupport::LogSubscriber | Ruby on Rails API [Official]
フォーマッター
参考:
ログにタイムスタンプを追加する方法 | うんたらかんたら Ruby
Ruby on Rails のログフォーマット変更 | Walk on apps.
instance method Logger#formatter= (Ruby 2.6.0)
Configuring Log Formatting in Rails | BigBinary Blog
Formatting of Rails logs when using ActiveRecord – Stack Overflow
How to format ruby logger? – Stack Overflow
コンソールでクエリログを出力する
ActiveRecord::Base.logger
と logger.formatter
を設定する。
def with_logger(logger, formatter = nil) old_logger = ActiveRecord::Base.logger logger.formatter = formatter if formatter ActiveRecord::Base.logger = logger yield ActiveRecord::Base.logger = old_logger end with_logger( Logger.new(STDOUT), ActiveSupport::Logger::SimpleFormatter.new ) do User.find(1) end
参考:
rails console 上での SQL 表示をデフォルトに | 継続的ブログ
ActiveRecord が生成する SQL を rails console 上に表示する | ABC Blog
ActiveRecord が生成する SQL を Rails のコンソールで確認する方法 | donghai821 の日記
rails console の SQL ログの表示を無効にする方法 – Qiita
binding.pry で sql 文を表示したい時のおまじない – Qiita
ActiveRecord で実行される SQL を script/console で確認するには | Pistolfly
Active Record で実行SQLを出力する方法 | ST40PG
instance method Logger#formatter= (Ruby 2.6.0)
ActiveSupport::Logger::SimpleFormatter | Ruby on Rails API [Official]
Watching ActiveRecord Do Its Thing | Buckblog
logger – rails/core.rb at v6.0.0.rc1 · rails/rails – GitHub
logger – rails/railtie.rb at v6.0.0.rc1 · rails/rails – GitHub
Display SQL queries in log with Rails 4 – Stack Overflow
Unable to turn off SQL logging in my Rails production environment – Stack Overflow
bloadcast
現在のログに加えて別のロガーにも出力する。
def with_broadcast(logger, formatter = nil) old_logger = ActiveRecord::Base.logger.dup logger.formatter = formatter if formatter ActiveRecord::Base.logger.extend( ActiveSupport::Logger.broadcast(logger) ) yield ActiveRecord::Base.logger = old_logger end with_broadcast( Logger.new(STDOUT), ActiveSupport::Logger::SimpleFormatter.new ) do User.find(1) end
参考:
broadcast – rails/logger.rb at v6.0.0.rc1 · rails/rails – GitHub
rails/railtie.rb at v6.0.0.rc1 · rails/rails – GitHub
Rake タスクのログ
参考:
タスクでクエリのログを標準出力に出す | このコードわからん
Better loging in rake tasks | macbury.ninja
puts vs logger in rails rake tasks – Stack Overflow
ActiveRecord::LogSubscriber
ActiveRecord
が発光する SQL イベントの通知を購読してロガーに出力する LogSubscriber
クラス
module ActiveRecord class LogSubscriber < ActiveSupport::LogSubscriber def sql(event) debug "#{event.payload[:name]} (#{event.duration}) #{event.payload[:sql]}" end end end
LogSubscriber
に ActiveRecord
のイベントを購読させる。
ActiveRecord::LogSubscriber.attach_to :active_record
参考:
ActiveRecord::LogSubscriber | Ruby on Rails API [Official]
rails/log_subscriber.rb at v5.2.3 · rails/rails – GitHub
sql
SQL クエリのログを出力する。
参考:
ActiveRecord の SQL 実行をフックしていろいろやる | 昼メシ物語
ActiveRecord で発行されたクエリの数を計測してテストに利用する – Qiita
Rails のリクエストログの Completed 行に含まれる ActiveRecord の項目の数値の意味 – Qiita
ActiveSupport::Notifications で実行される SQL を確認する | web note (n8.hatenablog.com)
sql.active_record – Active Support の Instrumentation 機能 | Rails ガイド [公式]
sql – ActiveRecord::LogSubscriber | Ruby on Rails API [Official]
log – ActiveRecord::ConnectionAdapters::AbstractAdapter | Ruby on Rails API [Official]
log – rails/abstract_adapter.rb at v5.2.3 · rails/rails – GitHub
Payload names for ‘sql.active_record’ instrumentation · Issue #30586 · rails/rails – GitHub
How to log Rails queries before they happen? – Stack Overflow
ActiveSupport::Logger
参考:
ActiveSupport::Logger | Ruby on Rails API [Official]
rails/logger.rb at 5-2-stable · rails/rails – GitHub
ActiveSupport::Logger::SimpleFormatter
参考:
rails のログフォーマットを変更する | tumblr (shim0mura)
ActiveSupport::Logger::SimpleFormatter | Ruby on Rails API [Official]
SimpleFormatter – rails/logger.rb at v5.2.3 · rails/rails – GitHub
ActiveSupport::TaggedLogging
参考:
ActiveSupport::TaggedLogging | Ruby on Rails API [Official]
TaggedLogging で ActiveRecord のログを調査しやすくする方法 – Qiita
rails4 における TaggedLogging の謎 | tumblr (shim0mura)
Building a Custom Logger with Active Support Tagged Logging | The Great Code Adventure
rails/tagged_logging.rb at 5-2-stable · rails/rails – GitHub
仕組み
参考:
Rails の logger 周りのコードリーディング | freedom-man.com
Instrumentation API
参考:
Active Support の Instrumentation 機能 | Rails ガイド [公式]
ActiveSupport::Notifications
参考:
Rails の計測を支える ActiveSupport::Notifications について | GMO メディア エンジニアブログ
ActiveSupport::Notifications | Ruby on Rails API [Official]
ActiveSupport::Notifications should be async? – Stack Overflow
notifier
参考:
rails/notifications.rb at v5.2.3 · rails/rails – GitHub
ActiveSupport::Notifications::Instrumenter
参考:
ActiveSupport::Notifications::Instrumenter | Ruby on Rails API [Official]
rails/instrumenter.rb at 5-2-stable · rails/rails – GitHub
instrument
ブロックを実行して、実行に掛かった時間を計測してイベントの通知を行う。エラーが発生した場合には例外情報をセットして通知を行う。
ActiveSupport::Notifications.instrument( "event_name.my_module", info1: value1, info2: value2 ) do # Do something end
参考:
instrument – ActiveSupport::Notifications | Ruby on Rails API [Official]
instrument – ActiveSupport::Notifications::Instrumenter | Ruby on Rails API [Official]
start
イベント開始の通知を行う。
参考:
start – ActiveSupport::Notifications::Instrumenter | Ruby on Rails API [Official]
finish
イベント完了の通知を行う。
参考:
finish – ActiveSupport::Notifications::Instrumenter | Ruby on Rails API [Official]
ActiveSupport::Notifications::Event
参考:
ActiveSupport::Notifications::Event | Ruby on Rails API [Official]
publish
参考:
The 10-minute Rails Pub/Sub | Dimitris Zorbas
Fanout
イベントの通知を登録されている全ての購読に送信する。
イベント通知のデフォルト実装。全てのメソッドは再入可能 (スレッドセーフ) である。
参考:
rails/fanout.rb at 5-2-stable · rails/rails – GitHub
LogSubscriber
- ActionController::LogSubscriber
- ActionView::LogSubscriber
- ActiveRecord::LogSubscriber
- ActiveStorage::LogSubscriber
- Rails::Rack::Logger
参考:
rails/action_controller/log_subscriber.rb at 5-2-stable · rails/rails – GitHub
rails/action_view/log_subscriber.rb at 5-2-stable · rails/rails – GitHub
rails/active_record/log_subscriber.rb at 5-2-stable · rails/rails – GitHub
rails/active_storage/log_subscriber.rb at 5-2-stable · rails/rails – GitHub
rails/rack/logger.rb at 5-2-stable · rails/rails – GitHub
ActionController::Instrumentation
参考:
ActionController::Instrumentation | Ruby on Rails API [Official]
rails/instrumentation.rb at 5-2-stable · rails/rails – GitHub
ActionView::AbstractRenderer
instrument
参考:
instrument – rails/abstract_renderer.rb at v6.0.0.rc1 · rails/rails – GitHub
Tips
参考:
Rails Logger and Rails Logging Best Practices | DZone Web Dev
Log4r
参考:
log4r で log の rotation をする方法 | 東京伊勢海老通信
log4r に日付でローリングしてほしかった話 – Qiita
Lograge
参考:
roidrage/lograge: An attempt to tame Rails’ default policy to log everything – GitHub
Rails でリクエストの HTTP ヘッダを取得してログに出力する | xyk のブログ
Rails のログをなんとかしたい人生だった – Qiita
activerecord-cause
参考:
joker1007/activerecord-cause: This gem logs where ActiveRecord actually loads record – GitHub
ActiveRecord の読み込みが実際にトリガーされた場所をログに記録する gem – Qiita
activerecord-cause を詠む | CHAMAO BLOG
Log which line caused a query | jkfill blog
active-record-query-trace
参考:
rails-flog
参考:
pinzolo/rails-flog: Rails log formatter for Parameters and SQL – GitHub
rails-flog を使って Rails の development ログのハッシュと SQL を見やすくする | Rails Webook
Silencer (gem)
参考:
stve/silencer: Easily suppress the Rails logger – GitHub
rack-timeout
タイムアウト時にログを出力する。
参考:
sharpstone/rack-timeout: Abort requests that are taking too long – GitHub