Laravel 10.x 里如何使用 json 格式保存日志

前提

当然是正常安装Laravel10.x 和 php8.2

原因

日志为什么要格式化?主要是为了方便人类阅读,把各种内容分开,黑客一样的滚滚日志可以一眼看清不再是梦想。

步骤

修改 config/logging.php,添加一个设定 daily_json

    'daily_json' => [
        'driver' => 'daily',
        'path' => storage_path('logs/laravel.log'),
        'level' => 'debug',
        'days' => 14, // 保留日志的天数
        'tap' => [App\Logging\CustomizeFormatter::class],
    ],

在这个配置中,tap 选项用于定制日志格式化。我们将在下一步创建 CustomizeFormatter 类来设置 JSON 格式。

在你的 Laravel 应用中创建一个新的类,例如 App\Logging\CustomizeFormatter。你可以在 app/Logging 目录下创建这个类(如果这个目录不存在,你需要先创建它)。

namespace App\Logging;

use Monolog\Formatter\JsonFormatter;

class CustomizeFormatter
{
    /**
     * 自定义日志格式。
     *
     * @param  \Monolog\Logger  $logger
     * @return void
     */
    public function __invoke($logger)
    {
        foreach ($logger->getHandlers() as $handler) {
            $handler->setFormatter(new JsonFormatter());
        }
    }
}

这个类将遍历所有日志处理器,并为它们设置 JsonFormatter

配置修改后,运行以下命令以清除配置缓存:

php artisan config:clear

按照这些步骤,Laravel 会每天创建一个新的日志文件,并且日志内容将以 JSON 格式记录。这些日志文件将保存在 storage/logs 目录下,并根据上面配置的天数进行自动轮换。

简简单单,结束

你可能感兴趣的:(php,laravel,laravel,php)