もがき系プログラマの日常

もがき系エンジニアの勉強したこと、日常のこと、気になっている技術、備忘録などを紹介するブログです。

Laravelのログファイルのパーミッションを変更

はじめに

こんばんは。今回も簡単なものですが、微妙にハマったので備忘録です。

Laravelのログファイルが作られる際に、Batchでのログファイル作成とWebアクセスでのログファイル作成で作成者が違って、ログに書き込めないエラーというのが発生していました。

原因は簡単でログファイルを作る際のパーミッション644 だからです。

コレを解決するのは以下を行います。

バージョン

$ php artisan -V
Laravel Framework 6.4.1

本題

config/logging.php

        'daily' => [
            'driver' => 'daily',
            'path' => storage_path('logs/laravel.log'),
            'level' => 'debug',
            'days' => 14,
            'permission' => 0664,    ← ここを追加
        ],

permission0664 に指定することで、新規ログファイルのパーミッション664 になります。

該当ソースはこちら

LaravelというよりMonologの指定ですね。

おまけ

短くなったので、ついでに、別の新しいログファイルにログを吐かせたいという場合の設定方法を書いておきます。

config/logging.php

        // 新たにログ設定を追加(levelとかpathとかは適当に)
        'sample' => [
            'driver' => 'single',
            'path' => storage_path('logs/sample.log'),
            'level' => 'info',
            'permission' => 0664,
        ]

使用方法

// Logファサードを使用する場合
Log::channel('sample')->info('==== Sample Log ====', ['loginId' => Auth::id()]);

終わりに

簡単ですが終わりです。 結構嵌りそうなもんですが、なぜデフォルトで 664 じゃないのでしょうね。

現場からは以上です。