logger
を使うことでRailsのコード上から、ログを出力できます。
logger.info '文字列をログファイルに書き出す' |
logger
は次の5つのレベルを持ち、設定によって書き出すログのレベルを制御します。
オプション | 説明 |
---|---|
fatal |
プログラムのクラッシュなど、制御できないエラー |
error |
プログラムで制御できるエラー |
warn |
警告 |
info |
システム操作や、管理に役立つ情報 |
debug |
開発者向けの情報 |
🚜 RSpecでのテストの書き方
RSpecでログへの出力をチェックしたい場合は次のように書きます。気を付けるべきことは、実際の動作を行う前にモックを作っておくことです。
it 'writes some message in log' do |
🎃 設定
設定ファイルconfig/development.rb
、config/test.rb
、config/production.rb
に対して次の設定を行います。
標準出力にログを書き出す
標準出力にログを書き出す場合は次のように設定します。
# STDOUT(標準出力)への書き出し |
出力フォーマッタの調整
config/environments/xxx.rb
に次の内容を設定することで出力フォーマットを変更できます。::Logger::Formatter.new
で日付やプロセスidを表示できます。
config.log_formatter = ::Logger::Formatter.new |
ログの出力内容をカスタマイズすることもできます。
config.log_formatter = proc do |severity, datetime, progname, msg| |
ログの出力レベルを制御
出力したいログレベルを設定します。この場合はerror
より低いレベルwarn,info,debug
は出力されません。
config.log_level = :error |
ログを日付別のファイルにする
日ごとや週ごとにログをローテートしたい場合は次のように設定します。
config.logger = Logger.new('log/development.log', 'daily') |
🎂 参考リンク
- logging - RSpec: how to test Rails logger message expectations?
- How to get Rails.logger printing to the console/stdout
- Railsでのログ/ロガーまとめ
- Railsでのログ/ロガーまとめ(ログ出力、ログレベル、ロガー作成、ログフォーマット)
- Rails の production 以外の環境で時刻などをログに出力する
- Railsのconfig/enviroments配下を読んでみる