diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/filter/LogMsgSendFilter.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/filter/LogMsgSendFilter.java new file mode 100644 index 0000000000..826bb05905 --- /dev/null +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/filter/LogMsgSendFilter.java @@ -0,0 +1,97 @@ +package com.epmet.commons.tools.filter; + +import ch.qos.logback.classic.Level; +import ch.qos.logback.classic.filter.LevelFilter; +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.classic.spi.IThrowableProxy; +import ch.qos.logback.classic.spi.StackTraceElementProxy; +import ch.qos.logback.core.spi.FilterReply; +import com.epmet.commons.tools.utils.HttpClientManager; +import com.epmet.commons.tools.utils.Result; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.text.SimpleDateFormat; + +/** + * desc: 发送日志消息 + * + * @date: 2020/6/24 17:47 + * @author: jianjun liu + */ +public class LogMsgSendFilter extends LevelFilter { + private static final Logger logger = LoggerFactory.getLogger(LogMsgSendFilter.class); + @Override + public FilterReply decide(ILoggingEvent event) { + //如果日志级别等于设置的日志级别 则发送消息 + if (event.getLevel().isGreaterOrEqual(Level.ERROR)) { + try { + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("【日志告警】\n"); + + stringBuilder.append("\n"); + + stringBuilder.append("告警级别:" + event.getLevel()); + stringBuilder.append("\n"); + stringBuilder.append("故障时间:" + formatLongTime2Str(event.getTimeStamp())); + stringBuilder.append("\n"); + stringBuilder.append("TraceId:" + Thread.currentThread().getName()); + stringBuilder.append("\n"); + stringBuilder.append("告警信息:" + event.getFormattedMessage()); + stringBuilder.append("\n"); + + IThrowableProxy throwableProxy = event.getThrowableProxy(); + //异常信息处理 暂时处理一级的5行数据 + apendStackInfo(stringBuilder, throwableProxy); + + Result flag = HttpClientManager.getInstance().sendAlarmMsg(stringBuilder.toString()); + if (!flag.success()) { + logger.warn("msgSender.sendMsg fail,param:{}", stringBuilder.toString()); + } + } catch (Exception e) { + logger.warn("decide exception", e); + } + } + //交给其他filter继续向下处理 + return super.decide(event); + } + + private void apendStackInfo(StringBuilder stringBuilder, IThrowableProxy throwableProxy) { + int defaultRowLine = 5; + if (throwableProxy != null) { + stringBuilder.append("异常信息:") + .append(throwableProxy.getClassName()) + .append(" : ") + .append(throwableProxy.getMessage()) + .append("\n"); + + StackTraceElementProxy[] stackTraceElementProxyArray = throwableProxy.getStackTraceElementProxyArray(); + StackTraceElementProxy stackTraceElementProxy = null; + + if (stackTraceElementProxyArray.length < defaultRowLine) { + defaultRowLine = stackTraceElementProxyArray.length; + } + for (int i = 0; i < defaultRowLine; i++) { + stackTraceElementProxy = stackTraceElementProxyArray[i]; + StackTraceElement stackTraceElement = stackTraceElementProxy.getStackTraceElement(); + stringBuilder.append("\t\tat "); + stringBuilder.append(stackTraceElement.getClassName()); + stringBuilder.append("."); + stringBuilder.append(stackTraceElement.getMethodName()); + stringBuilder.append("("); + stringBuilder.append(stackTraceElement.getFileName()); + stringBuilder.append(":"); + stringBuilder.append(stackTraceElement.getLineNumber()); + stringBuilder.append(")"); + stringBuilder.append("\n"); + } + } + } + + + private String formatLongTime2Str(long timestamp) { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + return dateFormat.format(timestamp); + } + +} diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsPublicityServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsPublicityServiceImpl.java index f0b0ca3c19..72b5ce2b1b 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsPublicityServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsPublicityServiceImpl.java @@ -5,7 +5,6 @@ import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.DateUtils; -import com.epmet.commons.tools.utils.HttpClientManager; import com.epmet.constant.DimAgencyConstant; import com.epmet.constant.ProjectConstant; import com.epmet.dto.voice.ArticleGridPublishedSummaryDTO; @@ -165,12 +164,6 @@ public class StatsPublicityServiceImpl implements StatsPublicityService { statsTagUsedDaily(finalStatsDate, dimIdBean, customerId); } catch (Exception e) { log.error(String.format(ProjectConstant.STATS_FAILED_PREFIX, "tagUsedDailyStatsjob", customerId, dimIdBean.getDateId(), e.getMessage())); - try { - String content = String.format(ProjectConstant.EXE_FAILED_MSG, "按日统计标签被使用次数", customerId, dimIdBean.getMonthId(), e.getMessage()); - HttpClientManager.getInstance().sendAlarmMsg(content); - } catch (Exception ex) { - log.error("sendAlarmMsg exception", e); - } } } } @@ -199,12 +192,6 @@ public class StatsPublicityServiceImpl implements StatsPublicityService { statsTagUsedMonthly(dimIdBean.getMonthId(), customerId); } catch (Exception e) { log.error(String.format(ProjectConstant.STATS_FAILED_PREFIX, "按月统计标签被使用次数", customerId, dimIdBean.getMonthId(), e.getMessage())); - try { - String content = String.format(ProjectConstant.EXE_FAILED_MSG, "按月统计标签被使用次数", customerId, dimIdBean.getMonthId(), e.getMessage()); - HttpClientManager.getInstance().sendAlarmMsg(content); - } catch (Exception ex) { - log.error("sendAlarmMsg exception", e); - } } } } @@ -234,12 +221,6 @@ public class StatsPublicityServiceImpl implements StatsPublicityService { statsTagViewedDaily(statsDate, dimIdBean, customerId); } catch (Exception e) { log.error(String.format(ProjectConstant.STATS_FAILED_PREFIX, "tagViewedDailyStatsjob", customerId, dimIdBean.getDateId(), e.getMessage())); - try { - String content = String.format(ProjectConstant.EXE_FAILED_MSG, "按日统计标签被查看次数", customerId, statsDate, e.getMessage()); - HttpClientManager.getInstance().sendAlarmMsg(content); - } catch (Exception ex) { - log.error("sendAlarmMsg exception", ex); - } } } } @@ -268,12 +249,6 @@ public class StatsPublicityServiceImpl implements StatsPublicityService { statsTagViewedMonthly(dimIdBean.getMonthId(), customerId); } catch (Exception e) { log.error(String.format(ProjectConstant.STATS_FAILED_PREFIX, "tagViewedMonthlyStatsjob", customerId, dimIdBean.getDateId(), e.getMessage())); - try { - String content = String.format(ProjectConstant.EXE_FAILED_MSG, "按月统计标签被查看次数", customerId, dimIdBean.getMonthId(), e.getMessage()); - HttpClientManager.getInstance().sendAlarmMsg(content); - } catch (Exception ex) { - log.error("sendAlarmMsg exception", e); - } } } } @@ -304,12 +279,6 @@ public class StatsPublicityServiceImpl implements StatsPublicityService { statsTagUsedQuarterly(dimIdBean.getQuarterId(), customerId); } catch (Exception e) { log.error(String.format(ProjectConstant.STATS_FAILED_PREFIX, "statsTagUsedQuarterly", customerId, dimIdBean.getQuarterId(), e.getMessage())); - try { - String content = String.format(ProjectConstant.EXE_FAILED_MSG, "按季统计标签被使用次数", customerId, dimIdBean.getQuarterId(), e.getMessage()); - HttpClientManager.getInstance().sendAlarmMsg(content); - } catch (Exception ex) { - log.error("sendAlarmMsg exception", e); - } } }); executorService.submit(() -> { @@ -318,12 +287,6 @@ public class StatsPublicityServiceImpl implements StatsPublicityService { statsTagUsedYearly(dimIdBean.getYearId(), customerId); } catch (Exception e) { log.error(String.format(ProjectConstant.STATS_FAILED_PREFIX, "statsTagUsedYearly", customerId, dimIdBean.getYearId(), e.getMessage())); - try { - String content = String.format(ProjectConstant.EXE_FAILED_MSG, "按年统计标签被使用次数", customerId, dimIdBean.getYearId(), e.getMessage()); - HttpClientManager.getInstance().sendAlarmMsg(content); - } catch (Exception ex) { - log.error("sendAlarmMsg exception", e); - } } }); } @@ -355,12 +318,6 @@ public class StatsPublicityServiceImpl implements StatsPublicityService { statsTagViewedQuarterly(dimIdBean.getQuarterId(), customerId); } catch (Exception e) { log.error(String.format(ProjectConstant.STATS_FAILED_PREFIX, "statsTagViewedQuarterly", customerId, dimIdBean.getQuarterId(), e.getMessage())); - try { - String content = String.format(ProjectConstant.EXE_FAILED_MSG, "按季统计标签被查看次数", customerId, dimIdBean.getQuarterId(), e.getMessage()); - HttpClientManager.getInstance().sendAlarmMsg(content); - } catch (Exception ex) { - log.error("sendAlarmMsg exception", e); - } } }); executorService.submit(() -> { @@ -371,12 +328,6 @@ public class StatsPublicityServiceImpl implements StatsPublicityService { } catch (Exception e) { log.error(String.format(ProjectConstant.STATS_FAILED_PREFIX, "statsTagViewedQuarterly", customerId, dimIdBean.getYearId(), e.getMessage())); - try { - String content = String.format(ProjectConstant.EXE_FAILED_MSG, "按年统计标签被查看次数", customerId, dimIdBean.getYearId(), e.getMessage()); - HttpClientManager.getInstance().sendAlarmMsg(content); - } catch (Exception ex) { - log.error("sendAlarmMsg exception", e); - } } }); } @@ -416,12 +367,6 @@ public class StatsPublicityServiceImpl implements StatsPublicityService { boolean b = factArticlePublishedDepartmentDailyService.deleteAndInsertBatch(customerId, dimIdBean.getDateId(), departmentDailyEntityMap.values()); } catch (Exception e) { log.error(String.format(ProjectConstant.STATS_FAILED_PREFIX, "statsPublishedDepartmentDaily", customerId, statsDate, e.getMessage())); - try { - String content = String.format(ProjectConstant.EXE_FAILED_MSG, "按日统计部门纬度文章总数", customerId, statsDate, e.getMessage()); - HttpClientManager.getInstance().sendAlarmMsg(content); - } catch (Exception ex) { - log.error("sendAlarmMsg exception", e); - } } } @@ -491,12 +436,6 @@ public class StatsPublicityServiceImpl implements StatsPublicityService { } catch (Exception e) { e.printStackTrace(); log.error(String.format(ProjectConstant.STATS_FAILED_PREFIX, "statsPublishedGridDaily", customerId, statsDate, e.getMessage())); - try { - String content = String.format(ProjectConstant.EXE_FAILED_MSG, "按日统计网格纬度文章总数", customerId, statsDate, e.getMessage()); - HttpClientManager.getInstance().sendAlarmMsg(content); - } catch (Exception ex) { - log.error("sendAlarmMsg exception", e); - } } @@ -562,12 +501,6 @@ public class StatsPublicityServiceImpl implements StatsPublicityService { } catch (Exception e) { e.printStackTrace(); log.error(String.format(ProjectConstant.STATS_FAILED_PREFIX, "statsPublishedAgencyDaily", customerId, statsDate, e.getMessage())); - try { - String content = String.format(ProjectConstant.EXE_FAILED_MSG, "按日统计部门纬度文章总数", customerId, statsDate, e.getMessage()); - HttpClientManager.getInstance().sendAlarmMsg(content); - } catch (Exception ex) { - log.error("sendAlarmMsg exception", e); - } } } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/logback-spring.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/logback-spring.xml index c1135e7e28..148588bffb 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/logback-spring.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/logback-spring.xml @@ -126,7 +126,7 @@ 15 - + ERROR ACCEPT DENY