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 index 9164f6d142..bec26ea89d 100644 --- 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 @@ -49,6 +49,10 @@ public class LogMsgSendFilter extends LevelFilter { //如果日志级别等于设置的日志级别 则发送消息 if (event.getLevel().isGreaterOrEqual(Level.ERROR)) { try { + //排除其他包路径的东西 + if (!event.getLoggerName().startsWith(baseProjectPackage)){ + return super.decide(event); + } getServerInfo(); if (EnvEnum.LOCAL.getName().equals(activeEnv)){ //交给其他filter继续向下处理 diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DingdingMsgSender.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DingdingMsgSender.java index bb663ac327..044b1d393c 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DingdingMsgSender.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DingdingMsgSender.java @@ -1,6 +1,8 @@ package com.epmet.commons.tools.utils; import com.alibaba.fastjson.JSON; +import com.dingtalk.api.DefaultDingTalkClient; +import com.dingtalk.api.request.OapiRobotSendRequest; import com.epmet.commons.tools.dto.form.DingTalkTextMsg; import com.google.common.collect.Lists; import org.apache.commons.codec.binary.Base64; @@ -12,9 +14,13 @@ import org.springframework.stereotype.Component; import javax.annotation.PreDestroy; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; +import javax.validation.constraints.NotNull; import java.io.IOException; +import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; import java.util.concurrent.ArrayBlockingQueue; /** @@ -115,36 +121,71 @@ public class DingdingMsgSender { running = false; } - /** - * 发送POST 请求 - * - * @param param 请求参数,JSON格式 - * @return - */ - private Result sendMsg(DingTalkTextMsg param) { - if (StringUtils.isBlank(param.getWebHook())) { - param.setWebHook(webHook); - } - if (StringUtils.isBlank(param.getSecret())) { - param.setSecret(secret); - } - Result result = new Result().error(); - Long timestamp = System.currentTimeMillis(); - try { - String stringToSign = timestamp + "\n" + param.getSecret(); - Mac mac = Mac.getInstance("HmacSHA256"); - mac.init(new SecretKeySpec(param.getSecret().getBytes(StandardCharsets.UTF_8), "HmacSHA256")); - byte[] signData = mac.doFinal(stringToSign.getBytes(StandardCharsets.UTF_8)); - String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8"); - String url = param.getWebHook(); - url = url.concat("×tamp=" + timestamp + "&sign=" + sign); - String jsonStrParam = param.getMsgContent(); - result = HttpClientManager.getInstance().sendPostByJSON(url, jsonStrParam); - } catch (Exception e) { - logger.warn("sendPostByJSON error", e); - } - return result; - } + /** + * 发送POST 请求 + * + * @param param 请求参数,JSON格式 + * @return + */ + @Deprecated + private Result sendMsg(DingTalkTextMsg param) { + if (StringUtils.isBlank(param.getWebHook())) { + param.setWebHook(webHook); + } + if (StringUtils.isBlank(param.getSecret())) { + param.setSecret(secret); + } + Result result = new Result().error(); + try { + String url = getUrlString(param, System.currentTimeMillis()); + String jsonStrParam = param.getMsgContent(); + result = HttpClientManager.getInstance().sendPostByJSON(url, jsonStrParam); + } catch (Exception e) { + logger.warn("sendPostByJSON error", e); + } + return result; + } + + @NotNull + private String getUrlString(DingTalkTextMsg param, Long timestamp) throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException { + String stringToSign = timestamp + "\n" + param.getSecret(); + Mac mac = Mac.getInstance("HmacSHA256"); + mac.init(new SecretKeySpec(param.getSecret().getBytes(StandardCharsets.UTF_8), "HmacSHA256")); + byte[] signData = mac.doFinal(stringToSign.getBytes(StandardCharsets.UTF_8)); + String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8"); + String url = param.getWebHook(); + url = url.concat("×tamp=" + timestamp + "&sign=" + sign); + return url; + } + + /** + * 发送POST 请求 + * + * @param param 请求参数,JSON格式 + * @return + */ + public Result sendMsgSdk(DingTalkTextMsg param) { + if (StringUtils.isBlank(param.getWebHook())) { + param.setWebHook(webHook); + } + if (StringUtils.isBlank(param.getSecret())) { + param.setSecret(secret); + } + Result result = new Result().error(); + try { + String url = getUrlString(param, System.currentTimeMillis()); + DefaultDingTalkClient client = new DefaultDingTalkClient(url); + OapiRobotSendRequest request = new OapiRobotSendRequest(); + request.setMsgtype("text"); + OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text(); + text.setContent(param.getContent()); + request.setText(text); + client.execute(request); + } catch (Exception e) { + logger.warn("sendPostByJSON error", e); + } + return result; + } public static void main(String[] args) { for (int i = 0; i < 50; i++) {