February 22, 2018

Laravel5.6 Logger カスタムチャンネルを作る

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でも十分かもしれない。

© kawax