飞书通知、日志调整

pull/1121/head
梁宇奇 2025-11-13 14:03:17 +08:00
parent 8aa12977d8
commit acab3839bd
3 changed files with 34 additions and 19 deletions

View File

@ -116,7 +116,7 @@ public class LogAspect
// 保存数据库
// AsyncManager.me().execute(AsyncFactory.recordOper(operLog));
// 输出到日志文件
log.info("接口请求日志:{}", operLog);
log.info("【接口请求日志】{}", operLog);
}
catch (Exception exp)

View File

@ -7,7 +7,6 @@ import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson2.JSON;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.ip.IpUtils;
import com.ruoyi.framework.notice.AbstractNotice;
import com.ruoyi.framework.notice.fs.entity.*;
import lombok.extern.slf4j.Slf4j;
@ -60,21 +59,34 @@ public class FsNotice extends AbstractNotice {
*
* @param e
*/
public <T extends Exception> void sendException2MonitorChat(T e) {
public <T extends Exception> void sendException2MonitorChat(T e){
sendException2MonitorChat(null,e);
}
/**
*
*
* @param e
*/
public <T extends Exception> void sendException2MonitorChat(String uri, T e) {
if (Boolean.TRUE.equals(monitorSwitch)) {
ThreadUtil.execAsync(() -> {
try {
//内容
FeiShuMsg.ZhCn zhCn = new FeiShuMsg.ZhCn();
List<List<FeiShuMsg.BaseField>> contentFields = new ArrayList<>(4);
List<List<FeiShuMsg.BaseField>> contentFields = new ArrayList<>(5);
contentFields.add(Collections.singletonList(FeiShuTextField
.createText(CharSequenceUtil.format("环境:{}", env))));
if (uri != null) {
contentFields.add(Collections.singletonList(FeiShuTextField
.createText(CharSequenceUtil.format("地址:{}", uri))));
}
contentFields.add(Collections.singletonList(FeiShuTextField
.createText(CharSequenceUtil.format("时间:{}", DateUtil.now()))));
contentFields.add(Collections.singletonList(FeiShuTextField
.createText(CharSequenceUtil.format("异常:{}", e.getClass().getName()))));
contentFields.add(Collections.singletonList(FeiShuTextField
.createText(CharSequenceUtil.format("错误信息:{}", StrUtil.truncateUtf8(e.getMessage(),512)))));
.createText(CharSequenceUtil.format("错误信息:{}", StrUtil.truncateUtf8(e.getMessage(), 512)))));
zhCn.setContent(contentFields);
//消息体
FeiShuMsg feiShuMsg = new FeiShuMsg();

View File

@ -40,7 +40,7 @@ public class GlobalExceptionHandler
{
String requestURI = request.getRequestURI();
log.error("请求地址'{}',权限校验失败'{}'", requestURI, e.getMessage());
sendExceptionMsg(e);
sendExceptionMsg(requestURI, e);
return AjaxResult.error(HttpStatus.FORBIDDEN, "没有权限,请联系管理员授权");
}
@ -53,7 +53,7 @@ public class GlobalExceptionHandler
{
String requestURI = request.getRequestURI();
log.error("请求地址'{}',不支持'{}'请求", requestURI, e.getMethod());
sendExceptionMsg(e);
sendExceptionMsg(requestURI, e);
return AjaxResult.error(e.getMessage());
}
@ -63,8 +63,9 @@ public class GlobalExceptionHandler
@ExceptionHandler(ServiceException.class)
public AjaxResult handleServiceException(ServiceException e, HttpServletRequest request)
{
log.error("请求地址'{}',发生业务异常'{}'", request.getRequestURI(), e.getMessage());
sendExceptionMsg(e);
String requestURI = request.getRequestURI();
log.error("请求地址'{}',发生业务异常'{}'", requestURI, e.getMessage());
sendExceptionMsg(requestURI, e);
Integer code = e.getCode();
return StringUtils.isNotNull(code) ? AjaxResult.error(code, e.getMessage()) : AjaxResult.error(e.getMessage());
}
@ -75,8 +76,9 @@ public class GlobalExceptionHandler
*/
@ExceptionHandler(IllegalArgumentException.class)
public AjaxResult illegalArgumentException(IllegalArgumentException e, HttpServletRequest request) {
log.error("请求地址'{}',发生校验异常'{}'", request.getRequestURI(), e.getMessage());
sendExceptionMsg(e);
String requestURI = request.getRequestURI();
log.error("请求地址'{}',发生校验异常'{}'", requestURI, e.getMessage());
sendExceptionMsg(requestURI, e);
return AjaxResult.error(e.getMessage());
}
@ -88,7 +90,7 @@ public class GlobalExceptionHandler
{
String requestURI = request.getRequestURI();
log.error("请求路径中缺少必需的路径变量'{}',发生系统异常.", requestURI, e);
sendExceptionMsg(e);
sendExceptionMsg(requestURI, e);
return AjaxResult.error(String.format("请求路径中缺少必需的路径变量[%s]", e.getVariableName()));
}
@ -105,7 +107,7 @@ public class GlobalExceptionHandler
value = EscapeUtil.clean(value);
}
log.error("请求参数类型不匹配'{}',发生系统异常.", requestURI, e);
sendExceptionMsg(e);
sendExceptionMsg(requestURI, e);
return AjaxResult.error(String.format("请求参数类型不匹配,参数[%s]要求类型为:'%s',但输入值为:'%s'", e.getName(), e.getRequiredType().getName(), value));
}
@ -117,7 +119,7 @@ public class GlobalExceptionHandler
{
String requestURI = request.getRequestURI();
log.error("请求地址'{}',发生未知异常.", requestURI, e);
sendExceptionMsg(e);
sendExceptionMsg(requestURI, e);
return AjaxResult.error(e.getMessage());
}
@ -129,7 +131,7 @@ public class GlobalExceptionHandler
{
String requestURI = request.getRequestURI();
log.error("请求地址'{}',发生系统异常.", requestURI, e);
sendExceptionMsg(e);
sendExceptionMsg(requestURI, e);
return AjaxResult.error(e.getMessage());
}
@ -137,11 +139,11 @@ public class GlobalExceptionHandler
*
*/
@ExceptionHandler(BindException.class)
public AjaxResult handleBindException(BindException e)
public AjaxResult handleBindException(BindException e, HttpServletRequest request)
{
log.error(e.getMessage(), e);
String message = e.getAllErrors().get(0).getDefaultMessage();
sendExceptionMsg(e);
sendExceptionMsg(request.getRequestURI(), e);
return AjaxResult.error(message);
}
@ -154,7 +156,7 @@ public class GlobalExceptionHandler
String requestURI = request.getRequestURI();
String message = e.getBindingResult().getFieldError().getDefaultMessage();
log.error("请求地址'{}',发生校验异常: {}", requestURI, message);
sendExceptionMsg(e);
sendExceptionMsg(requestURI, e);
return AjaxResult.error(message);
}
@ -170,10 +172,11 @@ public class GlobalExceptionHandler
/**
*
*
* @param uri
* @param e
* @param <T>
*/
private <T extends Exception> void sendExceptionMsg(T e) {
private <T extends Exception> void sendExceptionMsg(String uri, T e) {
SpringUtils.getBean(FsNotice.class).sendException2MonitorChat(e);
}
}