38
25

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 3 years have passed since last update.

Laravel ConsoleとHttpのログファイルを分ける

Last updated at Posted at 2018-09-22

以前にLaravel5.5 ConsoleとHttpのログファイルを分けるという記事を投稿しましたが、Laravel5.6でログ周りの機能が刷新されて使えなくなってしまいました。
Laravel5.6以降でもログファイルの切り分けできるようにしました。

ログの設定ファイル

config/logger.php なる設定ファイルが新たに追加されました。

詳細は公式ドキュメントやソースコードを参照。
https://readouble.com/laravel/5.7/ja/logging.html

コマンドのログ、ウェブアクセスのログを分ける

    'channels' => [
        'stack' => [
            'driver' => 'stack',
            'channels' => ['daily'],
        ],

        'daily' => [
            'driver' => 'daily',
            'path' => storage_path('logs/laravel.log'),
            'level' => 'debug',
            'days' => 7,
            'tap' => [App\Logging\CustomFilenames::class],
        ],
    ],

stack チャンネルに daily を指定して、 daily チャンネルに tap 配列にクラスを指定することでMonologのカスタマイズが簡単に行えます。
新たにカスタマイズ用のディレクトリとファイルを作成します。

$ mkdir app/Logging
$ touch app/Logging/CustomFilenames.php
$ open $_

app/Logging/CustomFilenames.php

<?php

namespace App\Logging;

use Monolog\Handler\RotatingFileHandler;

/**
 * 実行ユーザー毎にログファイルを出力する
 */
class CustomFilenames
{
    /**
     * Customize the given logger instance.
     *
     * @param  \Illuminate\Log\Logger $logger
     * @return void
     */
    public function __invoke($logger)
    {
        foreach ($logger->getHandlers() as $handler) {
            if ($handler instanceof RotatingFileHandler) {
                $sapi = php_sapi_name();
                $handler->setFilenameFormat("{filename}-$sapi-{date}", 'Y-m-d');
            }
        }
    }
}

こんな感じにログファイルが出力されます。

  • storage/logs/laravel-cli-2018-09-22.log
  • storage/logs/laravel-cli-server-2018-09-22.log
  • storage/logs/laravel-apache-2018-09-22.log

関連記事

38
25
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
38
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?