@RestController
@RequestMapping(value = "api/common")
public class CommonContoller {
/**
* 日志管理
*/
private Logger LOGGER = LoggerFactory.getLogger(CommonContoller.class);
// 字符串按照整型排序比较器
static class Str2IntComparator implements Comparator<String> {
private boolean reverseOrder; // 是否倒序
public Str2IntComparator(boolean reverseOrder) {
this.reverseOrder = reverseOrder;
}
public int compare(String arg0, String arg1) {
return arg1.compareTo(arg0);
}
}
/**
* 查询日志目录
*
* @return
*/
@ApiOperation(value = "查看日志目录名称", notes = "查询日志目录名称")
@GetMapping(value = "v1/logs")
public Result getLogsName(HttpServletRequest request) {
String fileLoaclPath = File.separator + "app" + File.separator + "logs" + File.separator + "work";
ArrayList<String> files = new ArrayList<String>();
File file = new File(fileLoaclPath);
File[] tempList = file.listFiles();
if (tempList != null) {
for (int i = 0; i < tempList.length; i++) {
if (tempList[i].isFile()) {
files.add(tempList[i].getName());
}
if (tempList[i].isDirectory()) {
}
}
Collections.sort(files, new Str2IntComparator(true));
return ResultUtil.success(files);
}
return ResultUtil.error("暂无日志");
}
/**
* 根据日志名称获取日志文件
*
* @param logName
* @return
*/
@ApiOperation(value = "查看日志", notes = "查看日志")
@GetMapping(value = "v1/find/log/{logName}/{page}/{size}")
public String getLog(@PathVariable("logName") String logName, @PathVariable Integer page, @PathVariable Integer size, HttpServletRequest request) {
String fileLoaclPath = File.separator + "app" + File.separator + "logs" + File.separator + "work" + File.separator + logName;
String line;
int count = 0;
BufferedReader bufferedReader = null;
StringBuilder stringBuilder = new StringBuilder();
LogRequestPage logRequestPage = new LogRequestPage(page, size);
try {
bufferedReader = new BufferedReader(new FileReader(fileLoaclPath));
while ((line = bufferedReader.readLine()) != null) {
if (count >= logRequestPage.getPage() && count < logRequestPage.getSize() + logRequestPage.getPage()) {
stringBuilder.append(line).append("\n");
}
count++;
}
return stringBuilder.toString();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (bufferedReader != null) {
bufferedReader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return "暂无该日志";
}
}
//分页工具类
@Data
public class LogRequestPage {
private int page;
private int size;
public LogRequestPage(Integer page, Integer size) {
this.page = page == null || page < 1 ? 0 : (page - 1) * 1000;
this.size = size == null || size < 1 ? 1000 : size;
}
}