Laravel・Lumenでログ出力先を変更する

最近勢いがあるPHPフレームワークの1つであるLaravelですが、ログファイルのデフォルト出力先は以下になっています。

  • storage/logs/laravel.log

普段、私は自分が作成した複数アプリ(CakePHP・Rails・Django・バッチ処理など)で同じログディレクトリを利用しています(管理しやすいので)。
また、デプロイ時にはシェル側でリンクを切り替えて対応しています。
そのため、プロジェクトディレクトリ以下に出力されると結構不便なんですよね。

Laravelでは、他フレームワークのように「configファイルをいじるだけでディレクトリ・ファイル名を操作する」というのができませんでした。
※ディレクトリの変更自体はApplicationクラスのuseStoragePath()メソッドで可能です。
なので、今回はこれをカスタマイズした方法を紹介します。
といっても、他言語や他フレームワークでやるような継承を使うだけです。

1. 独自のLogServiceProviderを作成

まずはじめに、\Illuminate\Log\LogServiceProviderを継承した独自プロバイダを生成します。

2. 独自のApplicationクラスを作成

次に、独自のApplicationクラスを生成します。
ここで、上記のMyLogServiceProviderを利用するように変更します。

3. 利用するApplicationクラスの変更

最後に、利用するApplicationクラスをMyApplicationに変更します。

これでログ出力をカスタマイズできます。

ちなみに、Laravelの軽量版であるLumenでは、Laravelの手順1が不要で、手順2の独自アプリケーションクラスでgetMonologHandler()を継承するだけで良いです。

カテゴリーPHP

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA