Laravel5.6のLogはManagerベースになったと思ってたけどよく見たら違った。
https://github.com/laravel/framework/blob/5.6/src/Illuminate/Log/LogManager.php
class LogManager implements LoggerInterface
確かに継承してない。
ということは拡張する場合もextend()
ではない方法。
ドキュメントに書いてあるのでその通りにするだけ。
https://readouble.com/laravel/5.6/ja/logging.html
プロジェクト内で使うだけならapp
下に作って使えばいいけど別プロジェクトでも使えるようにcomposerパッケージにした。必要なのはvia
で指定するclassだけなのでServiceProviderもFacadeも不要でシンプル。
デモプロジェクト
https://github.com/kawax/laravel-logger-project
CloudWatch Logs
https://github.com/kawax/laravel-logger-cwlogs
誰か作るだろうけど。
ChatWork
https://github.com/kawax/laravel-logger-chatwork
全部ChatWorkに流すと多すぎだけどログレベルが高い場合のみSlackに流す例が載ってたのでそれならChatWorkもありだろうと判断。ChatWork用のMonolog Handlerがなさそうだったのでそこも適当に作った。
使い方はcomposerでインストールしてconfig/logging.php
と.env
で設定するだけ。
5.6からのstack
チャンネルで複数同時に流せるのでCloudWatch Logsには全部流しつつ重要なログだけチャットに流すことができる。
ChatWorkへの通知にはNotification使ってたけどLogでも十分かもしれない。