LogController.php 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Log;
  4. use App\Services\LogService;
  5. use Exception;
  6. use Illuminate\Contracts\Foundation\Application;
  7. use Illuminate\Contracts\Pagination\LengthAwarePaginator;
  8. use Illuminate\Database\Eloquent\Builder;
  9. use Illuminate\Http\RedirectResponse;
  10. use Illuminate\Http\Request;
  11. use Illuminate\Http\Response;
  12. use Illuminate\Routing\Redirector;
  13. use Illuminate\Support\Facades\Auth;
  14. use Illuminate\Support\Facades\Gate;
  15. use Illuminate\Support\Facades\Validator;
  16. use function GuzzleHttp\Psr7\str;
  17. class LogController extends Controller
  18. {
  19. /**
  20. * Display a listing of the resource.
  21. *
  22. * @param Request $request
  23. * @return Application|LengthAwarePaginator|\Illuminate\Contracts\View\Factory|\Illuminate\View\View
  24. */
  25. public function index(Request $request)
  26. {
  27. if (!Gate::allows('日志-查询')) {
  28. return redirect(url('/'));
  29. }
  30. //没有查询条件,默认展示最近50条
  31. if (!$request->has('created_at_start') &&
  32. !$request->has('created_at_end') &&
  33. !$request->has('class') &&
  34. !$request->has('method') &&
  35. !$request->has('description') &&
  36. !$request->has("is_exception")
  37. ) {
  38. $logs = Log::query()
  39. ->with('user:id,name')
  40. ->orderBy('id', 'desc')
  41. ->paginate(50);
  42. return view('maintenance.log.index', ['logs' => $logs]);
  43. }
  44. //不传开始时间提示错误信息并返回
  45. if (!$request->has('created_at_start')) {
  46. session()->flash('warning', '请选择开始时间');
  47. return view('maintenance.log.index', ['logs' => null]);
  48. }
  49. $query = Log::query()->with('user:id,name');
  50. if ($request->has('class')) {
  51. $query->where('class', 'like', $request['class'] . '%');
  52. }
  53. if ($request->has('method')) {
  54. $query->where('method', 'like', $request['method'] . '%');
  55. }
  56. if ($request->has('description')) {
  57. $str = $request->description;
  58. $str = trim($str, '\\');
  59. $str = str_replace('\\', '\\\\', $str);
  60. $query->where('description', 'like', '%' . $str . '%');
  61. }
  62. if ($request->has('created_at_start')) {
  63. $query->where('created_at', '>=', $request->created_at_start." 00:00:00");
  64. }
  65. if ($request->has('created_at_end')) {
  66. $query->where('created_at', '<=', $request->created_at_end." 23:59:59");
  67. }
  68. if ($request->has("is_exception")){
  69. $query->where(function(Builder $query){
  70. $query->where("method","like","ERROR%")->orWhere("method","like","EXCEPTION%");
  71. });
  72. }
  73. $query->orderByDesc('id');
  74. $logs = $query->with('user:id,name')->paginate($request->paginate??50);
  75. return view('maintenance.log.index', ['logs' => $logs]);
  76. }
  77. /**
  78. * Display the specified resource.
  79. *
  80. * @param Log $log
  81. * @return Application|\Illuminate\Contracts\View\Factory|Response|\Illuminate\View\View
  82. */
  83. public function show(Log $log)
  84. {
  85. $log->loadMissing('user:id,name');
  86. return view('maintenance.log.show', ['log' => $log]);
  87. }
  88. public function syncRedisLogs()
  89. {
  90. LogService::syncRedisLogs();
  91. return redirect('maintenance/log');
  92. }
  93. }