Log.php 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <?php
  2. declare(strict_types=1);
  3. namespace SixShop\System;
  4. use think\App;
  5. use think\event\HttpEnd;
  6. class Log extends \think\Log
  7. {
  8. public function __construct(App $app, private ExtensionManager $extensionManager, private string $extensionID)
  9. {
  10. if (!$app->runningInConsole()) {
  11. $app->event->listen(HttpEnd::class, function () {
  12. $this->save();
  13. });
  14. }
  15. parent::__construct($app);
  16. }
  17. public function getConfig(?string $name = null, $default = null)
  18. {
  19. if ($name == 'level') {
  20. return $this->getLevelConfig();
  21. }
  22. return parent::getConfig($name, $default);
  23. }
  24. private function getLevelConfig(): array
  25. {
  26. $level = parent::getConfig('level', []);
  27. if (in_array('debug', $level)) {
  28. return $level;
  29. }
  30. $debug = $this->extensionManager->getExtensionConfig($this->extensionID, 'debug');
  31. if ($debug) {
  32. $level[] = 'debug';
  33. }
  34. return $level;
  35. }
  36. }