Lumen でログファイルをレベルと日付ごとに分けて出力する
Lumen でログファイルをレベル毎、日付毎にわけることができないかといろいろと調べました。
結果、以下の対応が簡単でお勧めです。
環境:Lumen (5.6.3)
bootstrap\app.php
use Monolog\Logger;
use Monolog\Handler\RotatingFileHandler;
use Monolog\Formatter\LineFormatter;
:
途中省略
:
$handlers = [];
$handlers[] = (new RotatingFileHandler(storage_path("logs/critical.log"), 30, Logger::CRITICAL, false))->setFormatter(new LineFormatter(null, null, true, true));
$handlers[] = (new RotatingFileHandler(storage_path("logs/error.log"), 30, Logger::ERROR, false))->setFormatter(new LineFormatter(null, null, true, true));
$handlers[] = (new RotatingFileHandler(storage_path("logs/warning.log"), 30, Logger::WARNING, false))->setFormatter(new LineFormatter(null, null, true, true));
$handlers[] = (new RotatingFileHandler(storage_path("logs/info.log"), 30, Logger::INFO, false))->setFormatter(new LineFormatter(null, null, true, true));
app('Psr\Log\LoggerInterface')->setHandlers($handlers);
return $app;
setFormatter() で日付が入るように指定しています。
RotatingFileHandler() を使い、Logger::XXXX のレベルのログに対して、ログファイルのパスと最大ファイル数を指定しています。
RotatingFileHandler で最大ファイル数を指定することで、古いログは削除されるため、ログが残りすぎる心配がありません。
便利ですね。
ぐぐると他にもいろいろと方法は出てきます。
多いのが $app->configureMonologUsing() を使ってログ設定を定義するというものでしたが、どうもこの関数はLumenの最新版では削除されているようで、「未定義の関数を呼んでるぞ!」と怒られますので気を付けましょう。
最近、サーバーサイドを始めました。
REST API を作るのに便利なフレームワークはないか探したところ、Lumen が軽量でよいと聞き、勉強しているところです。
Author And Source
この問題について(Lumen でログファイルをレベルと日付ごとに分けて出力する), 我々は、より多くの情報をここで見つけました https://qiita.com/sunskysoft/items/dd19cb056dcae3c037eb著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .