Help us understand the problem. What is going on with this article?

railsのログについて

More than 1 year has passed since last update.

はじめに

Railsのログについて調べてみた。

ログの書き方

ログの書き方は

logger.debug("message")

みたいに書く

ログにはレベルがあるらしく

下から

debug=>info=>warn=>error=>fatal=>unknown

という感じらしい

そしてデフォルトではすべてのログが出力されているから

Started GET "/users" for 127.0.0.1 at 2018-12-22 18:24:26 +0900
Processing by UsersController#index as HTML
[0;33;49musers/indexにアクセス[0m
  Rendering users/index.html.slim within layouts/application
  Rendered users/index.html.slim within layouts/application (1.5ms)
Completed 200 OK in 26ms (Views: 23.4ms | ActiveRecord: 0.0ms)


Started GET "/users" for 127.0.0.1 at 2018-12-22 18:24:26 +0900
Processing by UsersController#index as HTML
[0;33;49musers/indexにアクセス[0m
  Rendering users/index.html.slim within layouts/application
  Rendered users/index.html.slim within layouts/application (1.3ms)
Completed 200 OK in 24ms (Views: 22.1ms | ActiveRecord: 0.0ms)


Started GET "/users" for 127.0.0.1 at 2018-12-22 18:24:26 +0900
Processing by UsersController#index as HTML
[0;33;49musers/indexにアクセス[0m
  Rendering users/index.html.slim within layouts/application
  Rendered users/index.html.slim within layouts/application (1.4ms)
Completed 200 OK in 25ms (Views: 22.9ms | ActiveRecord: 0.0ms)

こんな感じでいろいろ出力される

ログのレベルを変えると表示も変わる

ログのレベルの変え方は

config/application.rbに

config.log_level = :unknown

みたいに書く

この例だとunknownしか表示されない

debugにするとすべて表示される感じ。

とりあえず試しに

config.log_level = :unknownとしてdef indexに

def index
    logger.unknown("users/indexにアクセス")
    @users = User.all 
  end

と書いてindexにアクセスしてみる

そうするとログは

[0;33;49musers/indexにアクセス[0m
[0;33;49musers/indexにアクセス[0m

みたいに表示される。

ログの色を変える

ログの色を変えて表示したい場合はcolorizeというgemを使う

gemfile
gem 'colorize'

bundle install

としたら準備ok

書き方は

logger.unknown("hello?".colorize(:yellow))

みたいに文字列のあとにcolorize(:color)で色を付けられる。

例外処理のログを出力

例外処理を行ってエラーが起きたらそのエラーのログを色付きで表示してみる。

createアクションにこんなコードを書く

create
def create 
    begin
      @user = Userrrr.create(user_params)
    rescue => e 
      logger.unknown("ユーザー作成中にエラーが発生したよ~~~\n#{e}".colorize(:red))
    ensure
      redirect_to users_path
    end 
end 

Userのスペルが間違っているのでエラーが出る。

rescueでエラーを補足して => e みたいしてeにエラーの情報を渡せる。

これで

[0;31;49mユーザー作成中にエラーが発生したよ~~~
uninitialized constant UsersController::Userrrr[0m

が色付きで表示される。

おわりに

development.log以外のログファイルを作ってそこにログを出力させるということもできるらしいけどそれに関してはまた調べる。

もうすぐクリスマスだなぁ
おわり:snowman:

sibakenY
大学卒業後Ruby, Ruby on Railsを勉強しています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away