LogController.java 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package com.genersoft.iot.vmp.vmanager.log;
  2. import ch.qos.logback.classic.Logger;
  3. import ch.qos.logback.core.rolling.RollingFileAppender;
  4. import com.alibaba.fastjson2.JSONArray;
  5. import com.genersoft.iot.vmp.conf.exception.ControllerException;
  6. import com.genersoft.iot.vmp.conf.security.JwtUtils;
  7. import com.genersoft.iot.vmp.gb28181.service.ICloudRecordService;
  8. import com.genersoft.iot.vmp.media.bean.MediaServer;
  9. import com.genersoft.iot.vmp.media.service.IMediaServerService;
  10. import com.genersoft.iot.vmp.service.ILogService;
  11. import com.genersoft.iot.vmp.service.bean.CloudRecordItem;
  12. import com.genersoft.iot.vmp.service.bean.DownloadFileInfo;
  13. import com.genersoft.iot.vmp.service.bean.LogFileInfo;
  14. import com.genersoft.iot.vmp.utils.DateUtil;
  15. import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
  16. import com.genersoft.iot.vmp.vmanager.cloudRecord.bean.CloudRecordUrl;
  17. import com.github.pagehelper.PageInfo;
  18. import io.swagger.v3.oas.annotations.Operation;
  19. import io.swagger.v3.oas.annotations.Parameter;
  20. import io.swagger.v3.oas.annotations.security.SecurityRequirement;
  21. import io.swagger.v3.oas.annotations.tags.Tag;
  22. import lombok.extern.slf4j.Slf4j;
  23. import org.apache.commons.compress.utils.IOUtils;
  24. import org.apache.commons.lang3.ObjectUtils;
  25. import org.slf4j.LoggerFactory;
  26. import org.springframework.beans.factory.annotation.Autowired;
  27. import org.springframework.http.MediaType;
  28. import org.springframework.web.bind.annotation.*;
  29. import javax.servlet.ServletOutputStream;
  30. import javax.servlet.http.HttpServletRequest;
  31. import javax.servlet.http.HttpServletResponse;
  32. import java.io.File;
  33. import java.io.FileInputStream;
  34. import java.io.IOException;
  35. import java.io.InputStream;
  36. import java.nio.file.Files;
  37. import java.util.ArrayList;
  38. import java.util.Calendar;
  39. import java.util.List;
  40. import java.util.zip.ZipEntry;
  41. import java.util.zip.ZipOutputStream;
  42. @SuppressWarnings("rawtypes")
  43. @Tag(name = "日志文件查询接口")
  44. @Slf4j
  45. @RestController
  46. @RequestMapping("/api/log")
  47. public class LogController {
  48. @Autowired
  49. private ILogService logService;
  50. @ResponseBody
  51. @GetMapping("/list")
  52. @Operation(summary = "分页查询日志文件", security = @SecurityRequirement(name = JwtUtils.HEADER))
  53. @Parameter(name = "query", description = "检索内容", required = false)
  54. @Parameter(name = "startTime", description = "开始时间(yyyy-MM-dd HH:mm:ss)", required = false)
  55. @Parameter(name = "endTime", description = "结束时间(yyyy-MM-dd HH:mm:ss)", required = false)
  56. public List<LogFileInfo> queryList(@RequestParam(required = false) String query, @RequestParam(required = false) String startTime, @RequestParam(required = false) String endTime
  57. ) {
  58. return logService.queryList(query, startTime, endTime);
  59. }
  60. /**
  61. * 下载指定日志文件
  62. */
  63. @ResponseBody
  64. @GetMapping("/file/{fileName}")
  65. public void downloadFile(HttpServletResponse response, @PathVariable String fileName) {
  66. try {
  67. File file = logService.getFileByName(fileName);
  68. if (file == null || !file.exists() || !file.isFile()) {
  69. throw new ControllerException(ErrorCode.ERROR400);
  70. }
  71. final InputStream in = Files.newInputStream(file.toPath());
  72. response.setContentType(MediaType.TEXT_PLAIN_VALUE);
  73. ServletOutputStream outputStream = response.getOutputStream();
  74. IOUtils.copy(in, response.getOutputStream());
  75. in.close();
  76. outputStream.close();
  77. } catch (IOException e) {
  78. response.setStatus(HttpServletResponse.SC_NO_CONTENT);
  79. }
  80. }
  81. }