CakePHP3・Herokuでfileログを見たい
CakePHP3・Herokuでfileログを見たいって時ありますよね。
前回はconsoleログでしたので、今回はfileログの見方を説明します。
とはいえ、これもスクール時代の講師の方に教えていただきました。
感謝しかありません。
それでは見ていきましょう。
【自分の環境】
macOS Catalina
PHP7.4.2
CakePHP3.8
MAMP5.7
Apache2.2
MySQL5.7
ログ設定の確認
設定はapp.phpです。
Herokuを使っている方はapp_heroku.phpかもしれません。
自分は以下のようになっています。
'custom' => [ 'className' => FileLog::class, 'path' => LOGS, 'file' => 'custom', 'levels' => ['notice', 'info'], ],
カスタムという名前のログで、ログレベルはnoticeとinfoに絞っています。
そしてclassNameはFileLogですね。
これはログがファイルとして出てくる設定です。
fileログの見方を見ていきましょう。
Herokuコマンドを使う
Herokuコマンドを使うだけです。
と言いつつ、かなり苦労した部分です。
ログ設定により出てきたログファイルをローカルに持って来ればいいんです。
と言っても、最初はやり方が本気でわかりませんでした。
Herokuからローカルにコピーする方法は「heroku ps:copy filename」です。
以下に公式ドキュメントを載せておきます。
filenameは何にする?
ですが、単純に「filename」に「custom.log」とするだけでは動かずエラーになります。
パスを合わせなければなりません。
自分の場合、「filename」を「/app/logs/custom.log」とすると動きました。
つまりコマンドとしては「heroku ps:copy /app/logs/custom.log」です。
これで行ける方はいいですが、行けない方は、まずHerokuのパス構造を「heroku run bash」で探らなければなりません。
「heroku run bash」と打つと、Herokuの中にbashで入れますので、そこからpwdしたりlsしたり(基本的なコマンドです)すれば、ログがどこに出力されているかわかります。
これでパスを合わせてください。
終わりに
以上となります。
fileログの見方でした。
Herokuからローカルにコピーしてくる方法なんて、全くわからなかったです。
教えてくれた方に感謝ですね。
ありがとうございました。