Logger.php 3.0 KB

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