【Lumen】Logファイルを日付ごとで出力させる


Log出力のための設定

LumenでLog出力を有効にするには $app->withFacades(); のコメントアウトを解除する必要があります。
単純にLog出力させるだけならこれだけでよさそうですが、日付単位でとなると、bootstrap\app.phpをいろいろ編集する必要があります。

bootstrap\app.php

app.php
<?php

require_once __DIR__.'/../vendor/autoload.php';

// 以下を追加する
+ use Monolog\Handler\RotatingFileHandler;
+ use Monolog\Formatter\LineFormatter;

~~~略~~~

// コメントアウトを解除
- // $app->withFacades();
+ $app->withFacades();

~~~略~~~

// 以下を追加
+ $app->configureMonologUsing(function($monolog) {
+     $handlers[] = (new RotatingFileHandler(storage_path('logs/api.log'))) 
+                     ->setFormatter(new LineFormatter(null, null, true, true));
+ 
+     $monolog->setHandlers($handlers);
+ 
+     return $monolog;
+ });

上記の設定後はstorage\logs以下に次のようにlogが吐き出されます。

もしlog名を変更する場合はstorage_pathgapi.log部分を変更すればおk
[log名]-Y-m-d.logのように吐き出されます。)

ちなみにLineFormatterクラスの引数のデフォルト値は以下のようにセットされるようです。
(詳しくはLineFormatterクラスのコンストラクタ参照)

LineFormatter.php
public function __construct($format = null, $dateFormat = null, $allowInlineLineBreaks = false, $ignoreEmptyContextAndExtra = false)

この辺の引数を渡してやれば日付部分のフォーマットを変更できそうです。

参考