Railsのloggerに関するお勉強ノート


Rails loger 201404

Railsでアプリ開発をしていたわけですが、とにかくlogger先輩のご尽力なしにはここまで来れませんでした。本当にありがとうございました(まだ開発が全ておわったわけじゃないけど)っていう思いがあるでしかし。

そんなloggerに関して色々と学んだのでPOST。


基本形

まずだいたいControllerの中で色々とlogを出力しておきたい系。
開発時はデバッグ目的に出したい系。

ログレベルの設定とメソッド名について

Railsのログレベルは以下の5つらしい

:debug -> :info -> :warn -> :error -> :fatal

で、どのレベル以上のログを出力するか? というのは config/enviroments 配下の環境設定にカキコ。

developmentモードではデフォルトで debugまでログが出力されるけども、個別に調整したかったら、

config.log_level = :info

などとすると、info以上のログレベルのものしか出力されない系だそう。

なので、今回アプリのβ版を急いでリリースしたので最初ちゃんと動いてるか不安だったのでproduction環境でも最初は log_level = :debug としてデバッグログも追って挙動を確認した系。

さて、それぞれのログ出力をcontroller内で出し分けたい時は

logger.debug("hogehoge")
logger.error("akande kore shikashi")

などと指定する。

コントローラ以外の場所でもログ出力したい系の時

たとえば、バッチ処理を自作して追加した系の時とかは
RAILS_ROOT/lib/tasks/
とかに自作のTaskクラスを書いたりしますし、そもそもApplicationControllerを継承しない自作クラスとかの作成もあったりするかと思います。

そんな時は

Rails.logger.debug("Red lobster")

などと書くだけで安心のログ出力。
なんて便利なんやぁー

なにこのインスタンス、構造を見たいです の時

わしみたいなRails素人だと開発中によくしらない変数とかを適当にdebugログに出力しては中身を確認して「ふむふむ」とか言ってる事、よくあると思います。
で、たまにいつもどおりlogger先輩になんでも突っ込んでると

#<ClassName:0x1a9999>

みたいな「なんすか?それ」的な文字列が出力される。 ※これなんなのまじで?

そんなときは、インスタンス(というかオブジェクト)の.inspectメソッドを実行するで。
これで中身がわかりやすくバッチリ出力してくれる。 ※あ、これloggerの機能じゃなかった

例)

logger.debug(@nazo.inspect)

httpリクエストの中身を見たい時

またloggerの機能とは直接関係ないんですが、先月の開発はスマホ向けAPIを実装する際に喉から手がてるほどhttpリクエストヘッダやボディを見たくてしかたがなかった日がある。

※tcpdumpしろよっていうのは無しの方向でお願いします

これはrequest変数の中に入っている。
Controller内であればいつでも参照できるっぽい。
けど、何も考えずに logger.debug(request.inspect) ってやると、膨大な量の情報がどばどば出てくるので大変ですね。

その場合、見たい個別のプロパティにアクセスしてやればよろしいっぽい(てかこの変ちゃんと調べてないから今度ちゃんと勉強しよう。)

例)

logger.debug(request.body.read)

これでHTTPリクエストボディーの中身に何が入ってリクエストされているのか一目瞭然や!
※今回Android側がPUTやPOSTでデータをRailsに送れているのかリアルわからなくなって助けられた。

そのほか、 httpリクエストヘッダとかも見れるんじゃねーのかな?

余談ですが、POSTされてるデータを純粋に見たいだけの時は素直に
logger.debug(params)で簡単に確認できました。

まとめ

Rails.loggerと inspect メソッドさえ抑えておけば捗りすぎるな。

とはいえログローテーションについて調べてない。あかんな。もうβ版がproduction環境で動いている。すぐに調べよう。(おせえ)

以下、全然関係ない話

最近5年ぶりにNARUTOを読んで追いついたら、なんかドラゴンボール級のインフレを見せている模様。
あと、デイダラが死んだー って思ってたけど読み進めていったら復活したー! って思ったけどすぐに倒されて成仏。すこし残念なきもちに。


T02200322 0240035112420161163

2014-04-10 | Posted in RailsNo Comments » 


関連記事

Comment





Comment



*