はじめに
Railsでエラーが起きたとき、つい puts
を使ってしまいがち。でも、それって React で console.log
だけで済ませるのと同じ…?
今回は、フロントエンジニアでも感覚的に理解しやすいように、Railsにおける puts
と logger
の違いを、Reactでのログ出力と比較しながらわかりやすく解説します。
想定読者
・普段 React や Next.js を使っているフロントエンジニア
・Rails に触れ始めた初学者(バックエンドのエラー処理を理解したい)
・puts
でデバッグしているが、logger
との違いがわからない人
ReactとRailsのログ出力を比較してみる
やりたいこと | React | Ruby / Rails |
---|---|---|
一時的なログ出力 | console.log(...) |
puts |
エラー出力 | console.error(...) |
logger.error(...) |
ログの記録・監視 |
Sentry , LogRocket
|
Rails.logger , Rollbar
|
ログレベルの設定 |
warn , info , etc. |
warn , info , etc. |
puts
を使ってみる(Reactでいう console.log)
begin
do_something
rescue => e
puts "エラー発生: #{e.message}"
end
どこに出力される?
⇒ 標準出力(=開発時のターミナル)だけ。
ログレベルは?
⇒ なし! info や error のような区別はできません。
本番で使える?
⇒ ×(出力されるだけで、残らないし見逃しやすい)
logger
を使うとどうなる?(Reactでいう console.error + ログ保存)
begin
do_something
rescue => e
Rails.logger.error("エラー発生: #{e.message}")
end
出力先
log/development.log
や log/production.log
に記録される。
ログレベルでの分類が可能
Rails.logger.debug("デバッグ情報")
Rails.logger.info("通常ログ")
Rails.logger.warn("注意喚起")
Rails.logger.error("エラー発生")
Rails.logger.fatal("致命的エラー")
本番環境にも対応
後からログを見返したり、監視サービスと連携できる!
ログ出力のベストプラクティス(React経験者向けまとめ)
シーン | 推奨方法(Rails) |
---|---|
一時的に何か出力したい |
puts でもOK(開発中限定) |
本番でのエラー記録 | Rails.logger.error(...) |
ユーザー行動や処理追跡 |
logger.info , logger.debug
|
監視や可視化が必要な場面 | ログレベルを使い分ける |
まとめ
puts
は一時的なデバッグ向け。Reactでの console.log と同じ。
logger
はログレベルごとに記録・分析が可能。Reactで console.error を使ったり Sentry を導入する感覚に近い。
Railsでは Rails.logger
を活用することで、本番運用でも活きるログ設計ができる。