
com.hecloud.runtime.common.file.LogCrawler Maven / Gradle / Ivy
package com.hecloud.runtime.common.file;
import com.hecloud.runtime.common.model.GenericResult;
import com.hecloud.runtime.common.model.LogBean;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.RandomAccessFile;
/**
* 日志文件抓取类
*
* @author LoveinBJ
*/
public class LogCrawler {
private static Logger logger = LoggerFactory.getLogger(LogCrawler.class);
public static GenericResult crawl(String path, Long position, Long size) {
if (StringUtils.isEmpty(path)) {
logger.error("日志文件路径为空!");
return new GenericResult<>(false, "日志文件不存在!");
}
File logFile = new File(path);
if (logFile.exists() && logFile.isFile()) {
long length = logFile.length();
if (0 == length) {
logger.error("AuditLog File {} size is 0", path);
return new GenericResult<>(false, "日志文件为空!");
}
if (0 >= position || position > length) {
position = length;
}
if (size <= position) {
position = position - size;
} else {
position = 0L;
}
try (RandomAccessFile logRandomFile = new RandomAccessFile(logFile, "rw")) {
StringBuilder builder = new StringBuilder();
logRandomFile.seek(position);
if (size > 0) {
while (logRandomFile.readByte() != '\n') {
}
}
String tmp;
while ((tmp = logRandomFile.readLine()) != null) {
builder.append(new String(tmp.getBytes("ISO-8859-1"))).append("\n");
}
position = logRandomFile.length();
LogBean logBean = new LogBean(position, builder.toString());
return new GenericResult<>(true, "success", logBean);
} catch (Exception e) {
logger.error("get log content error:", e);
return new GenericResult<>(false, "获取日志内容失败!");
}
} else {
logger.error("Log File {} does not exist!", path);
return new GenericResult<>(false, "日志文件不存在!");
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy