プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Ruby on Rails
  • 【Ruby on Rails】ログ出力の記述法や様々な設定方法、設計方針
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Ruby on Rails】ログ出力の記述法や様々な設定方法、設計方針

12.02

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

デフォルトのアプリケーションログが出力される場所

Railsではターミナルでアプリケーションログが出力されていますがデフォルトで下記の場所にも出力されています。

1
log/development.log

これはdevelopment環境で動作している場合に出力されます。もしtest環境で動かしていればtest.logに出力されますし、production環境で動作させていればproduction.logに出力されることになります。

アプリ内にログ出力の設定をする

デフォルトのアプリケーションログもそうですがアプリ内のコントローラやモデル等にログ出力設定をloggerオブジェクトを使えばすることができます。下記のように記述します。

1
logger.ログレベル "ログメッセージ"

ログレベル

デフォルトのログレベル(どこまでのレベルをログに出力するか)はdebugになっているので全てのログがファイルに出力されることになります。

ログレベル(数字) ログレベル 意味
5 unknown 原因不明のエラー
4 fatal エラーハンドリングができない致命的エラー
3 error エラーハンドリングされたエラー
2 warn 警告
1 info 通知
0 debug 開発用のデバッグ情報

ログレベルの設定場所

開発環境の場合は下記の場所の「config.log_level」という設定項目にて設定をします。

1
config/environments/development.rb

例えば、上記ファイルに下記のように記述すればdevelopmentログにはログレベルがwarn以上の物のみしか出力されなくなります。

1
config.log_level = :warn

ログローテーションの設定

config/environments/development.rbに対して下記のように追記で設定します。下記設定は日次(daily)でログローテーションさせるための設定になります。

1
config.logger = Logger.new('log/development.log','daily')

その他

他にもオリジナルのロガーを作成したり、日次や週次でロガーを分ける設定だったり、ログフォーマットを整形する設定だったり色々な設定があるので色々調べてみてください。

設計指針

ログの取得対象

  • HTTP電文内容やレスポンスコード(Railsのデフォルトのログで可能)
  • その他アプリの操作ログ(独自に実装する。ログテーブルで実装するのが一般的)

ログテーブルへ出力する

ログ用のテーブル(UserEvent等)を作りそこにレコードを作って出力するようにします。

用途

  • ログイン、ログアウトのアプリの操作履歴を記録したい場合等

カラム例

ユーザーid

ログインログアウト履歴を管理するならユーザーテーブルと紐付けたりすると良いでしょう。

イベントタイプ

任意の名前をつけると良いでしょう。

  • rejected(アカウント停止等でログイン拒否)
  • logged_in(ログイン)
  • logged_out(ログアウト)
発生時刻

datetime型にします。既存のcreated_atでも問題ないでしょう。

Railsのデフォルトのログをそのまま使う

Railsでは特に設定しなくても何もしなくても下記のようにHTTP電文内容がコンソール及び、ファイルに出力されます。正常の場合はログレベルがINFOで、エラーが発生した場合はログレベルがERRORになるようです。

懸念点

電文の内容を全て出力してしまうと住所や電話番号等の個人情報までログに出力されてしまうことになります。

ログの出力先

デフォルトではディスク上に出力されてしまうとは思いますが、最近はAWSのCloudWatchやS3を出力先にします。

スポンサーリンク
  • 2019 12.02
  • miyabisan2
  • コメントを書く
  • Ruby on Rails
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2019 11.30

    【Ruby on Rails】モデル同士を関連づけを便利に扱う機能

  2. 2019 12.14

    【VSCode】Railsのデバッグ設定(Mac)

  3. 2018 06.20

    【Ruby on Rails】ページごとに、読み込まれるCSSとJavaScriptを変えるには?(Rails5まで)

  4. 2022 09.04

    【Rails】「ロードパス」、「Zeitwerk」について

  5. 2018 06.17

    【Ruby on Rails】概要(他言語への影響、環境別構成例、テストフレームワーク)

  6. 2019 12.30

    【Ruby on Rails】「Model Spec(モデルスペック)」の基本

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Ruby on Rails】エラー処理の概要

【Ruby on Rails】RailsでのAjaxリ…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー