[Laravel] ログにファイル名と行番号を追加する

カテゴリ: 未分類

app/Logging/CustomFormatter.php

<?php

declare(strict_types=1);

namespace App\Logging;

use Monolog\Formatter\LineFormatter;
use Monolog\Logger;
use Monolog\Processor\IntrospectionProcessor;

class CustomizeFormatter
{
    public function __invoke($monolog)
    {
        $fields = [
            "%datetime%",
            "%level_name%",
            "%extra.class%::%extra.function%#%extra.line%",
            "%message%",
        ];
        $logFormat = implode("\t", $fields) . PHP_EOL;
        $formatter = new LineFormatter($logFormat, 'ymd-His.v');

        $ip = new IntrospectionProcessor(Logger::DEBUG, ['Illuminate\\']);
        foreach ($monolog->getHandlers() as $handler) {
            $handler->setFormatter($formatter);
            $handler->pushProcessor($ip);
        }
    }
}

app/config/logging.php

defaultの変更は、説明をわかりやすくするため直接変更しています。本当は.envのLOG_CHANNELを変更したほうが良いです。


// 'default' => env('LOG_CHANNEL', 'stack'), 'default' => 'mylog', 'channels' => [ 'mylog' => [ 'driver' => 'single', 'tap' => [App\Logging\CustomFormatter::class], // ここを追加する 'path' => storage_path('logs/laravel.log'), 'level' => 'debug', ],
Amazonでポイントを賢くGETする方法
Amazonギフト券チャージ で最大2.5%もお得!
こちらもおススメ

コメントを残す

メールアドレスが公開されることはありません。