CriticalFormatter.php 941 B

12345678910111213141516171819202122232425262728293031323334
  1. <?php
  2. namespace App\Logging;
  3. use Monolog\Logger;
  4. /**
  5. * Handler some critical,alert,emergency events
  6. *
  7. * Class CriticalFormatter
  8. * @package App\Logging
  9. */
  10. class CriticalFormatter
  11. {
  12. public function __invoke($logger)
  13. {
  14. /** @var Logger $logger */
  15. //$logger->popHandler();
  16. //也可以在前置或后置设置一些通知渠道
  17. //$logger->setHandlers([new EmailHandler()]); //TODO 这里设置处理器
  18. //上面设置完处理器会覆盖原有处理器,原来的默认是流式写入(I/O磁盘)
  19. $logger->setExceptionHandler(function ($e){
  20. //比如 异常$e->getMessage()中存在Permission denied就是文件权限异常
  21. //用switch捕获各种写入失败场景
  22. //普通日志也应做此处理,记录应该分级分块
  23. //logs表考虑下是否启用
  24. //写入失败时,会再此处处理下
  25. });
  26. }
  27. }