Browse Source

加强判断 不抛异常

dev_shibei_match
jianjun 4 years ago
parent
commit
5352ef3a77
  1. 29
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/ApplicationReadyEventListener.java
  2. 43
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/filter/LogMsgSendFilter.java

29
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/ApplicationReadyEventListener.java

@ -13,10 +13,7 @@ import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient; import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiRobotSendRequest; import com.dingtalk.api.request.OapiRobotSendRequest;
import com.dingtalk.api.response.OapiRobotSendResponse; import com.dingtalk.api.response.OapiRobotSendResponse;
import com.epmet.commons.tools.dto.form.DingTalkTextMsg;
import com.epmet.commons.tools.enums.EnvEnum; import com.epmet.commons.tools.enums.EnvEnum;
import com.epmet.commons.tools.utils.HttpClientManager;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.SpringContextUtils; import com.epmet.commons.tools.utils.SpringContextUtils;
import com.taobao.api.ApiException; import com.taobao.api.ApiException;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
@ -52,31 +49,11 @@ public class ApplicationReadyEventListener implements ApplicationListener<Applic
} }
} }
private void sendDingTextMsg() {
//发送启动成功消息
InetUtils inetUtils = SpringContextUtils.getBean(InetUtils.class);
String serverIp = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
//开发小组 群机器人地址
String url = "https://oapi.dingtalk.com/robot/send?access_token=ffd7c972b0525e249283df1a16b65a8b9d0012601f3a458dfc588c2eac497bb5";
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(EnvEnum.getCurrentEnv().getName())
.append("【")
.append(appName)
.append("】")
.append("ip地址: ")
.append(serverIp)
.append("部署完毕!");
DingTalkTextMsg msg = new DingTalkTextMsg();
msg.setWebHook(url);
msg.setAtAll(true);
msg.setContent(stringBuilder.toString());
Result<String> stringResult = HttpClientManager.getInstance().sendPostByJSON(url, msg.getMsgContent());
logger.info(stringResult);
}
private String getServerIp() { private String getServerIp() {
InetUtils inetUtils = SpringContextUtils.getBean(InetUtils.class); InetUtils inetUtils = SpringContextUtils.getBean(InetUtils.class);
if (inetUtils == null){
return null;
}
return inetUtils.findFirstNonLoopbackHostInfo().getIpAddress(); return inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
} }

43
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/filter/LogMsgSendFilter.java

@ -9,19 +9,18 @@ import ch.qos.logback.core.spi.FilterReply;
import com.epmet.commons.tools.constant.ThreadLocalConstant; import com.epmet.commons.tools.constant.ThreadLocalConstant;
import com.epmet.commons.tools.dto.form.DingTalkTextMsg; import com.epmet.commons.tools.dto.form.DingTalkTextMsg;
import com.epmet.commons.tools.enums.EnvEnum; import com.epmet.commons.tools.enums.EnvEnum;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.DingdingMsgSender; import com.epmet.commons.tools.utils.DingdingMsgSender;
import com.epmet.commons.tools.utils.SpringContextUtils; import com.epmet.commons.tools.utils.SpringContextUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.cloud.commons.util.InetUtils; import org.springframework.cloud.commons.util.InetUtils;
import org.springframework.core.env.Environment;
import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -47,40 +46,42 @@ public class LogMsgSendFilter extends LevelFilter {
//如果日志级别等于设置的日志级别 则发送消息 //如果日志级别等于设置的日志级别 则发送消息
if (event.getLevel().isGreaterOrEqual(Level.ERROR)) { if (event.getLevel().isGreaterOrEqual(Level.ERROR)) {
try { try {
getServerInfo();
StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("【日志告警】\n"); stringBuilder.append("【日志告警】\n");
stringBuilder.append("\n"); stringBuilder.append("\n");
stringBuilder.append("告警级别:" + event.getLevel()); stringBuilder.append("告警级别:").append(event.getLevel());
stringBuilder.append("\n"); stringBuilder.append("\n");
if (StringUtils.isNotBlank(appName)) { if (StringUtils.isNotBlank(appName)) {
stringBuilder.append("服务名称:" + appName); stringBuilder.append("服务名称:").append(appName);
stringBuilder.append("\n"); stringBuilder.append("\n");
} }
getServerInfo();
if (StringUtils.isNotBlank(activeEnv)) { if (StringUtils.isNotBlank(activeEnv)) {
stringBuilder.append("告警环境:" + EnvEnum.getEnum(activeEnv).getName()); stringBuilder.append("告警环境:").append(activeEnv);
stringBuilder.append("\n"); stringBuilder.append("\n");
} }
if (StringUtils.isNotBlank(serverIp)) { if (StringUtils.isNotBlank(serverIp)) {
stringBuilder.append("IP地址:" + serverIp); stringBuilder.append("IP地址:").append(serverIp);
stringBuilder.append("\n"); stringBuilder.append("\n");
} }
stringBuilder.append("故障时间:" + formatLongTime2Str(event.getTimeStamp())); stringBuilder.append("故障时间:").append(DateUtils.formatTimestamp(event.getTimeStamp(),DateUtils.DATE_TIME_PATTERN));
stringBuilder.append("\n"); stringBuilder.append("\n");
stringBuilder.append("TraceId:" + Thread.currentThread().getName()); stringBuilder.append("TraceId:").append(Thread.currentThread().getName());
stringBuilder.append("\n"); stringBuilder.append("\n");
HttpServletRequest request = getRequest(); HttpServletRequest request = getRequest();
if (request != null) { if (request != null) {
String requestURI = request.getRequestURI(); String requestURI = request.getRequestURI();
stringBuilder.append("请求路径:" + requestURI); stringBuilder.append("请求路径:").append(requestURI);
stringBuilder.append("\n"); stringBuilder.append("\n");
stringBuilder.append("请求参数:" + ThreadLocalConstant.requestParam.get()); stringBuilder.append("请求参数:").append(ThreadLocalConstant.requestParam.get());
stringBuilder.append("\n"); stringBuilder.append("\n");
} }
@ -89,7 +90,7 @@ public class LogMsgSendFilter extends LevelFilter {
if (throwableProxy == null && formattedMessage.length() > 1000) { if (throwableProxy == null && formattedMessage.length() > 1000) {
formattedMessage = formattedMessage.substring(0, getCharacterPosition(formattedMessage, baseProjectPackage, 5)); formattedMessage = formattedMessage.substring(0, getCharacterPosition(formattedMessage, baseProjectPackage, 5));
} }
stringBuilder.append("告警信息:" + formattedMessage); stringBuilder.append("告警信息:").append(formattedMessage);
stringBuilder.append("\n"); stringBuilder.append("\n");
@ -134,12 +135,8 @@ public class LogMsgSendFilter extends LevelFilter {
} }
try { try {
if (activeEnv == null) { if (activeEnv == null) {
Environment environment = SpringContextUtils.getBean(Environment.class); EnvEnum currentEnv = EnvEnum.getCurrentEnv();
String[] activeProfiles = environment.getActiveProfiles(); activeEnv = currentEnv.getName();
if (activeProfiles != null && activeProfiles.length > 0) {
logger.info("activeProfiles:{}", activeProfiles);
activeEnv = activeProfiles[0];
}
} }
} catch (Exception e) { } catch (Exception e) {
logger.warn("getServerInfo get bean Environment exception", e); logger.warn("getServerInfo get bean Environment exception", e);
@ -212,16 +209,6 @@ public class LogMsgSendFilter extends LevelFilter {
} }
} }
private String formatLongTime2Str(long timestamp) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
return dateFormat.format(timestamp);
}
public void setActiveEnv(String activeEnv) {
this.activeEnv = activeEnv;
}
public void setAppName(String appName) { public void setAppName(String appName) {
this.appName = appName; this.appName = appName;
} }

Loading…
Cancel
Save