😄

Laravelでログの出力される日付のフォーマットを変更するメモ

2024/10/06に公開

Laravelでログの出力される日付のフォーマットを変更するメモ

Laravelでログの出力される日付のフォーマットを変更する方法を知ったのでメモ。

コード

  • MonologのFormatterの第二引数に日付のフォーマットを与えるだけで変更ができる。
  • フォーマットの最後のvはミリ秒まで取得できるらしい。
  • datetimeの後にtimzezoneを書いておくとわかりやすくて良いかもしれない。
<?php

namespace App\Logging\Formatters;

use Illuminate\Log\Logger;
use Monolog\Formatter\LineFormatter;

class CustomFormatter extends LineFormatter
{
    /**
     * 出力されるログのフォーマット
     *
     * @var string
     */
    protected $log_format = "[%datetime%
    (JST)] %channel%.%level_name%: %message% %context% %extra%\n";

    /**
     * ログの日付フォーマット
     *
     * @var string
     */

    protected $date = "Y/m/d H:i:s.v";

    public function __invoke(Logger $logger): void
    {
        foreach ($logger->getHandlers() as $handler) {
            $handler->setFormatter(new LineFormatter(
                $this->log_format,
                $this->date,
                true,
                true
            ));
        }
    }
}

GitHubで編集を提案

Discussion