3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

cakephp3 で debug.log, error.log のIPアドレスをロードバランサーではなく、送信元IPアドレスで出力したい

Posted at

弊社は、CakePHP3.5のアプリケーションが動くWebサーバの手前にAWSのALB(Application Load Balancer)が存在します。
独自のアプリケーションログに関しては、X-Forwarded-Forヘッダを参照し、ログに出力していたのですが、cakephp3が提供するログに関してはデフォルトのままの運用となっていました。

2018-03-02 03:36:53 Error: [Cake\Network\Exception\XxxxxxException] Xxxxxxxxxx in /aaa/bbb/ccc/ddd/YyyyyyyyController.php on line 155
Request URL: /eee/ffff/
Client IP: {ロードバランサーのIPアドレス}
Stack Trace:
# 0 ......

これが、エラー発生時にデバッグしづらい!!

  1. エラーの発生時間帯を確認
    • msec単位で同じくらいの時間帯をある程度幅でおぼえておく
  2. アクセスログとつきあわせ
    • URLが同じやつはどこだー

なんてことをたまにやってて、もう我慢できない!ということになりました。

バージョン

  • CakePHP v3.5.13
  • PHP 7.2.3

どうやるか

とりあえず、公式ドキュメントを見てみましょう。

そう、たった1行でできちゃいます。

AppController.php

// initialize()メソッドに追記
$this->request->trustProxy = true;

X-Forwarded-ForヘッダをCakePHPのアプリケーションで使うためには、上記の設定を入れます。

2018-04-01 13:45:55 Error: [Cake\Network\Exception\XxxxxxException] Xxxxxxxxxx in /aaa/bbb/ccc/ddd/YyyyyyyyController.php on line 121
Request URL: /eee/ffff/
Client IP: {リクエスト送信元のIPアドレス}
Stack Trace:
# 0 ......

これで、エラーが発生したときに、一目で送信元が特定できるようになりました!

GoogleのクローラーのIPアドレスがある程度把握できているので、実際のお客様のエラーなのかクローラーのエラーなのかが瞬時に判断つくので、めっちゃ便利です。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?