#はじめに
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を使う
gem 'colorize'
bundle install
としたら準備ok
書き方は
logger.unknown("hello?".colorize(:yellow))
みたいに文字列のあとにcolorize(:color)で色を付けられる。
#例外処理のログを出力
例外処理を行ってエラーが起きたらそのエラーのログを色付きで表示してみる。
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以外のログファイルを作ってそこにログを出力させるということもできるらしいけどそれに関してはまた調べる。
もうすぐクリスマスだなぁ
おわり