Java获取项目日志/读取日志

@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;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值