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」です。

以下に公式ドキュメントを載せておきます。

Heroku Exec (SSH トンネリング) | Heroku Dev Center

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からローカルにコピーしてくる方法なんて、全くわからなかったです。

教えてくれた方に感謝ですね。

ありがとうございました。