Browse Source

错误日志打印4

master
jianjun 3 years ago
parent
commit
41942101a7
  1. 2
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/filter/LogMsgSendFilter.java
  2. 101
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DingdingMsgSender.java

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

@ -51,7 +51,7 @@ public class LogMsgSendFilter extends LevelFilter {
try { try {
//排除其他包路径的东西 //排除其他包路径的东西
if (!event.getLoggerName().startsWith(baseProjectPackage)){ if (!event.getLoggerName().startsWith(baseProjectPackage)){
return FilterReply.DENY; return super.decide(event);
} }
getServerInfo(); getServerInfo();
if (EnvEnum.LOCAL.getName().equals(activeEnv)){ if (EnvEnum.LOCAL.getName().equals(activeEnv)){

101
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; package com.epmet.commons.tools.utils;
import com.alibaba.fastjson.JSON; 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.epmet.commons.tools.dto.form.DingTalkTextMsg;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Base64;
@ -12,9 +14,13 @@ import org.springframework.stereotype.Component;
import javax.annotation.PreDestroy; import javax.annotation.PreDestroy;
import javax.crypto.Mac; import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec; import javax.crypto.spec.SecretKeySpec;
import javax.validation.constraints.NotNull;
import java.io.IOException; import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ArrayBlockingQueue;
/** /**
@ -115,36 +121,71 @@ public class DingdingMsgSender {
running = false; running = false;
} }
/** /**
* 发送POST 请求 * 发送POST 请求
* *
* @param param 请求参数JSON格式 * @param param 请求参数JSON格式
* @return * @return
*/ */
private Result<String> sendMsg(DingTalkTextMsg param) { @Deprecated
if (StringUtils.isBlank(param.getWebHook())) { private Result<String> sendMsg(DingTalkTextMsg param) {
param.setWebHook(webHook); if (StringUtils.isBlank(param.getWebHook())) {
} param.setWebHook(webHook);
if (StringUtils.isBlank(param.getSecret())) { }
param.setSecret(secret); if (StringUtils.isBlank(param.getSecret())) {
} param.setSecret(secret);
Result<String> result = new Result<String>().error(); }
Long timestamp = System.currentTimeMillis(); Result<String> result = new Result<String>().error();
try { try {
String stringToSign = timestamp + "\n" + param.getSecret(); String url = getUrlString(param, System.currentTimeMillis());
Mac mac = Mac.getInstance("HmacSHA256"); String jsonStrParam = param.getMsgContent();
mac.init(new SecretKeySpec(param.getSecret().getBytes(StandardCharsets.UTF_8), "HmacSHA256")); result = HttpClientManager.getInstance().sendPostByJSON(url, jsonStrParam);
byte[] signData = mac.doFinal(stringToSign.getBytes(StandardCharsets.UTF_8)); } catch (Exception e) {
String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8"); logger.warn("sendPostByJSON error", e);
String url = param.getWebHook(); }
url = url.concat("&timestamp=" + timestamp + "&sign=" + sign); return result;
String jsonStrParam = param.getMsgContent(); }
result = HttpClientManager.getInstance().sendPostByJSON(url, jsonStrParam);
} catch (Exception e) { @NotNull
logger.warn("sendPostByJSON error", e); private String getUrlString(DingTalkTextMsg param, Long timestamp) throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
} String stringToSign = timestamp + "\n" + param.getSecret();
return result; 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("&timestamp=" + timestamp + "&sign=" + sign);
return url;
}
/**
* 发送POST 请求
*
* @param param 请求参数JSON格式
* @return
*/
public Result<String> sendMsgSdk(DingTalkTextMsg param) {
if (StringUtils.isBlank(param.getWebHook())) {
param.setWebHook(webHook);
}
if (StringUtils.isBlank(param.getSecret())) {
param.setSecret(secret);
}
Result<String> result = new Result<String>().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("sdk"+param.getContent());
request.setText(text);
client.execute(request);
} catch (Exception e) {
logger.warn("sendPostByJSON error", e);
}
return result;
}
public static void main(String[] args) { public static void main(String[] args) {
for (int i = 0; i < 50; i++) { for (int i = 0; i < 50; i++) {

Loading…
Cancel
Save