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',
],
こちらもおススメ