「PONOS Advent Calendar 2021」22日目の記事です。
昨日は@abcdeffさんの記事でした。
ログがスゴイ貯まる
最近Laravelのログがすぐインスタンスを圧迫するサービスが出てきたので、毎日ローテーションするかつ1日分のログしか残さない運用をしていました。
しばらくは順調だったのですが今度はローテーションする前に満杯になるようになってきました。
Laravelデフォルトのログ設定ではdaily
しかない、困った。
というわけで時間毎にローテーションさせるための設定を作成しました。
Hourlyローテーション
Laravelのログ設定でdaily
を選ぶとMonolog\Handler\RotatingFileHandler
クラスが使われるので、これを少しいじって1時間毎にローテションされるようにします。
まずはRotatingFileHandler.php
を適当な場所にコピーしてきて以下のように修正します。
RotatingFileHandler.php
public function __construct(string $filename, int $maxFiles = 0, $level = Logger::DEBUG, bool $bubble = true, ?int $filePermission = null, bool $useLocking = false)
{
...
$this->dataFormat = 'Y-m-d-H';
...
}
これだけです。かんたん!
あとはconfig/logging.php
でこのハンドラーを使うチャンネルを追加して使用すればOKです。
logging.php
return [
...
'hourly' => [
'driver' => 'monolog',
'level' => 'debug',
'handler' => RotatingFileHandler::class,
'handler_with' => [
'filename' => storage_path('logs/laravel.log'),
'maxFiles' => 6,
],
],
...
];
これで1時間毎にローテーションされて過去6時間分しかログが残らないようになりました!
明日は@honeniqさんの記事です。お楽しみに!!