joppotjoppotコピペで絶対動く。概要みなさんこんにちはcandleです。ログをtd-agentで取得してみたいと思います。rails5からログのフォーマットが変更され、多少問題がでてきたので、そこもうまく汲み取って、解説していきます。関連記事rails4の方は以下の記事を参考にしてください。railsをproductionモードで動かせるwebrickでもnginxでもpumaでもapacheでも良いですが、productionモードで動かせる状態を作っておいてください。railsを動かすマシーンにtd-agentかfluentdがインストールされている事が前提になります。railsのログフォーマットを変更するrailsのproductionログのフォーマットはデフォルトで下のような感じになっていると思います。4と2箇所違うところがあります。1つは、リクエストIDが追加されたことです。[5865421e-16ac-4ced-8a64-8153a981e583]railsのログは1アクセスでもステータス、どのページ、パラメータは何かなど、複数行のログが出力されます。リクエストIDは非常に便利で、その1アクセス中は同じリクエストIDが表示されるので、どこからどこまでが同一のアクセスか分かるようになりました。1つは、あまりtd-agentからすると嬉しくないことですが、FATALエラーメッセージの改行が別のログとして出力される様になりました。`about’実際は1つのエラーにもかかわらず、エラーメッセージの改行ごとに、別のエラーとしてログに記述されます。td-agentとslackを連携させ、FATALエラーを通知する様にした場合、実際は1つのエラーにもかかわらず、改行ごとに通知が届いてしまいます。Rails4まではFATALは1つでメッセージは改行で表示されていました。この記事では、エラーログを表示する関数をオーバーライドして、Rails4の様なログの出力に変更します。FATALのエラーメッセージが別々のログとして保存されても良いという方は次の章を飛ばしても問題ありません。FATALエラーのログフォーマットを変更する幸いなことに、FATALのメッセージの部分の変更はそこまで難しくありません。log_error関数をRails4の書き方に変更します。ついでに改行文字も削除しておくと、fluentd側の処理が楽になるのでそうしてあります。railsプロジェクトのconfig/environment.rbを開いて、以下を記述します。endend一度サーバを再起動して、FATALエラーログがどの様に変わったか確認しましょう。FATALエラーは以下の様に、一行に収まります。`about’エラーログの設定はこれでいいでしょうViewのログは表示しない下のコードはデフォルトのログフォーマットから何も変更して無い状態のコードです。endendrailsのプロダクションログにはviewの情報も表示されます。この情報はログファイルのサイズを圧迫するだけ無駄なので、ログに残さないようにします。以下が該当する部分のログになります。(0.8ms)この変更はあくまで、viewの情報を表示しないコードなので、変更しなくても問題ありません。config/environment.rbを開きます。先ほどのフォーマットを以下の様に変更します。erbを使っている人は”.haml”の部分を”.erb”に変更してください。endendif文を見ればわかる様に、.hamlが含まれているログを表示しない様にしています。これでrailsの設定は以上です。td-agentでrailsログを取得する準備それでは、td-agent側に移動します。私はCentOS6.5の中でtd-agentを動かしています。nginxで動かしたいと思います。それらのサーバー構築はあらかじめお願いします。エラーのメッセージは1文にまとまっています。td-agentの設定はシンプルになります。stdout</match>pathでrailsプロジェクトのlogフォルダにあるproduction.logを参照します。参照先のパスは各自のものにしてください。rails.productionで取得したログにタグをつけます。/var/log/td-agent/rails.production.pos一時ファイルの置き場を指定します。formatはrails5のproduction.logのフォーマットに合わせています。rails4と違うところはrequest_idが加わっています。rails.production>で上のログを受け取り、標準出力します。logを取得する為の設定です。ログの取得を確認するtd-agentを再起動します。restart本番環境のrailsアプリケーションを起動します。アクセしてみましょう。td-agentの確認は/var/log/td-agent/td-agent.logに出力されます。/var/log/td-agent/td-agent.log以下がそのログになります。FATALのところはこうなっています。`about'”}まとめどうでしょうか、うまく取得できたでしょうか。理想的には、railのログフォーマットはできるだけいじらないことがベストだと思います。FATALエラーメッセージの形式上変更せざるをえませんでした。今後よりより取得の仕方が出てきたら随時対応していきたいと思います。スポンサードリンク「為になったなぁ」と思ったら、シェアお願いします。コメントをキャンセルメールアドレスが公開されることはありません。皆さんこんにちはcandleです。今回はfabricで分割したpythonファイルを読み込んでみましょう。皆さんこんにちはcandleです。railsのキャッシュを管理したいと思います。みなんさんこんにちはcandleです。今回は間違って入れてしまったり、不必要になったgemの削除のやり方を紹介します。みなさんこんにちはcandleです。今回はcreate-react-appで作成したreactプロジェクトをS3にデプロイしてみたいと思います。みなさんこんにちはcandleです。今回はちょっと問題が起きてshell_execがうまくいかないときのトラブルシューティングをまとめます。Sansフォントウェイトのcss書き方まとめプロフィールベンチャー企業のCTOをやってます。大学時代にプログラミングを始め、javaから入門し、C++へて、PHPへと進み、会社ではRailsを使用。環境設定スポンサードリンクjoppotコピペで絶対動く。