Commit b664f258 authored by yanzg's avatar yanzg

修复异常提醒,从而正确的跟踪异常信息

parent 61a46f19
...@@ -66,6 +66,14 @@ public class LogBase implements ThreadNext.Next, InitializingBean { ...@@ -66,6 +66,14 @@ public class LogBase implements ThreadNext.Next, InitializingBean {
cache.add(logVo); cache.add(logVo);
} }
public void notifyNotHandle(List<LogInfoVo> notHandles) {
logFeign.notifyNotHandle(notHandles);
}
public void notifyTodayCount(LogCountResult todayResult) {
logFeign.notifyTodayCount(todayResult);
}
/** /**
* 执行下一个函数,出现异常会继续执行 * 执行下一个函数,出现异常会继续执行
* *
...@@ -94,14 +102,6 @@ public class LogBase implements ThreadNext.Next, InitializingBean { ...@@ -94,14 +102,6 @@ public class LogBase implements ThreadNext.Next, InitializingBean {
return true; return true;
} }
public void notifyNotHandle(List<LogInfoVo> notHandles) {
logFeign.notifyNotHandle(notHandles);
}
public void notifyTodayCount(LogCountResult todayResult) {
logFeign.notifyTodayCount(todayResult);
}
/** /**
* 沉睡时间 * 沉睡时间
* *
......
...@@ -95,28 +95,14 @@ public class LogCountTime implements ThreadNext.Next, InitializingBean { ...@@ -95,28 +95,14 @@ public class LogCountTime implements ThreadNext.Next, InitializingBean {
/** /**
* 结束 * 结束
* *
* @param log 日志信息 * @param log 日志信息
* @param useTime 使用时间
*/ */
public void finish(LogInfoVo log, long useTime) { public void finish(LogInfoVo log) {
if (log == null) { if (log == null) {
return; return;
} }
// 获取当前请求的级别
int level = 0;
if (useTime > cloudConfig.getLockTime()) {
level = -1;
} else {
// 这里需要时间按照升序排序
List<Integer> times = cloudConfig.getLogTimeMax();
for (Integer time : times) {
if (time < useTime) {
level = time;
}
}
}
// 设置当前等级 // 设置当前等级
LogInfoVo.Handle handle = new LogInfoVo.Handle(level, useTime, log.getStatus() == LogInfoVo.STATUS_ERROR); LogInfoVo.Handle handle = new LogInfoVo.Handle(log.getLevel(), log.getUseTime(), log.getStatus() == LogInfoVo.STATUS_ERROR);
synchronized (log) { synchronized (log) {
// 非第一次处理 // 非第一次处理
LogInfoVo.Handle hisHandle = log.getHandle(); LogInfoVo.Handle hisHandle = log.getHandle();
......
...@@ -65,6 +65,11 @@ public class LogInfoVo extends BaseVo { ...@@ -65,6 +65,11 @@ public class LogInfoVo extends BaseVo {
*/ */
@ApiModelProperty(notes = "执行耗时: 单位(毫秒)", required = true, example = "20") @ApiModelProperty(notes = "执行耗时: 单位(毫秒)", required = true, example = "20")
private long useTime; private long useTime;
/**
* 耗时等级
*/
@ApiModelProperty(notes = "耗时等级", required = true, example = "20")
private int level;
/** /**
* 创建时间 * 创建时间
*/ */
...@@ -178,6 +183,14 @@ public class LogInfoVo extends BaseVo { ...@@ -178,6 +183,14 @@ public class LogInfoVo extends BaseVo {
this.useTime = useTime; this.useTime = useTime;
} }
public void setLevel(int level) {
this.level = level;
}
public int getLevel() {
return level;
}
public String getCreateDate() { public String getCreateDate() {
return createDate; return createDate;
} }
...@@ -202,6 +215,7 @@ public class LogInfoVo extends BaseVo { ...@@ -202,6 +215,7 @@ public class LogInfoVo extends BaseVo {
this.handle = handle; this.handle = handle;
} }
public static class Handle { public static class Handle {
private final int level; private final int level;
private final long useTime; private final long useTime;
......
...@@ -69,15 +69,33 @@ public class LogLocal implements ThreadNext.Next, InitializingBean { ...@@ -69,15 +69,33 @@ public class LogLocal implements ThreadNext.Next, InitializingBean {
if (!isWait) { if (!isWait) {
cache.remove(log.getLogId()); cache.remove(log.getLogId());
} }
// 获取当前使用时间 // 获取当前使用时间
long useTime; long useTime;
if (log.getEnd() == 0) { if (log.getEnd() == 0) {
useTime = System.currentTimeMillis() - log.getStart(); useTime = System.currentTimeMillis() - log.getStart();
log.setUseTime(useTime);
} else { } else {
useTime = log.getUseTime(); useTime = log.getUseTime();
} }
// 获取当前请求的级别
int level = 0;
if (useTime > cloudConfig.getLockTime()) {
level = -1;
} else {
// 这里需要时间按照升序排序
List<Integer> times = cloudConfig.getLogTimeMax();
for (Integer time : times) {
if (time < useTime) {
level = time;
}
}
}
log.setLevel(level);
// 记录请求时间 // 记录请求时间
logCountTime.finish(log, useTime); logCountTime.finish(log);
// 日志详情请求不记录,防止死循环递归 // 日志详情请求不记录,防止死循环递归
boolean isLog = isLog(log.getTag(), log.getUrl()); boolean isLog = isLog(log.getTag(), log.getUrl());
// 并判断是否达到记录的时间标准 // 并判断是否达到记录的时间标准
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment