Logger.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. namespace UCore\Helper;
  3. use Illuminate\Support\Facades\Log;
  4. /**
  5. * 日志助手类
  6. */
  7. class Logger
  8. {
  9. /**
  10. * 记录调试日志
  11. *
  12. * @param string $msg 日志消息
  13. * @param array $data 日志数据
  14. * @return void
  15. */
  16. static public function debug($msg, $data = [])
  17. {
  18. Log::debug($msg . ' ' . json_encode($data));
  19. }
  20. /**
  21. * 错误日志
  22. *
  23. * @param $msg
  24. * @param $data
  25. * @return void
  26. */
  27. static public function error($msg, $data = [])
  28. {
  29. Log::error($msg . ' ' . json_encode($data));
  30. }
  31. static public function warning($msg, $data = [])
  32. {
  33. Log::warning($msg . ' ' . json_encode($data));
  34. }
  35. /**
  36. * 错误记录
  37. *
  38. * @param string $msg 日志消息
  39. * @param \Throwable $exception 异常对象
  40. * @param array $data 额外数据
  41. * @return void
  42. */
  43. static public function exception($msg, \Throwable $exception, $data = [])
  44. {
  45. // 格式化堆栈跟踪,使其换行显示
  46. $traceString = $exception->getTraceAsString();
  47. $formattedTrace = str_replace('#', "\n #", $traceString);
  48. // 构建格式化的日志信息
  49. $logMessage = $msg . "\n" .
  50. "异常信息: " . $exception->getMessage() . "\n" .
  51. "文件位置: " . $exception->getFile() . ":" . $exception->getLine() . "\n" .
  52. "堆栈跟踪:\n " . $formattedTrace;
  53. // 如果有额外数据,添加到日志中
  54. if (!empty($data)) {
  55. $logMessage .= "\n额外数据: " . json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
  56. }
  57. Log::error($logMessage);
  58. }
  59. static public function info($msg, $data = [])
  60. {
  61. Log::info($msg . ' ' . json_encode($data));
  62. }
  63. public static function clear_log()
  64. {
  65. // 获取当前日志文件路径
  66. $logPath = storage_path('logs');
  67. $currentDate = date('Y-m-d');
  68. // Laravel 默认日志文件名格式
  69. $logFiles = [
  70. $logPath . '/laravel.log',
  71. $logPath . "/laravel-{$currentDate}.log",
  72. ];
  73. $clearedCount = 0;
  74. foreach ($logFiles as $logFile) {
  75. if (file_exists($logFile)) {
  76. // 清空文件内容但保留文件
  77. file_put_contents($logFile, '');
  78. $clearedCount++;
  79. }
  80. }
  81. return $clearedCount;
  82. }
  83. }