Laravel Log 的小筆記

Laravel 的 Log 包的很簡單用,但想做更客製化的功能該怎麼辦?

Laravel <= 5.5 適用

如果需要自定義 monolog 其實很簡單,只要在 provider 的 boot() 階段執行下面程式碼即可:

public function boot()
{
    $this->app->configureMonologUsing(function($monolog) {
        // 想要我的設定嗎?在這邊都給你!
        return $monolog;
    });

    // 這裡即可拿到客制的 Monolog
    Log::getMonolog();
}

Laravel 5.6 呢?

5.6 開始, Laravel 換依賴 PSR-3 的 LoggerInterface ,也就是可以替換成其他 Logger 實作。但我們還是可以把 Monolog 的物件拿出來操作:

public function boot()
{
    $monolog = Log::getLogger();
    // 設定 monolog ...
}

或是直接把 Facade 當作 Monolog 來用(因為背後的 Illuminate\Log\Logger 有實作 __call() ):

public function boot()
{
    Log::pushHandler(new Handler());
}