Commit 6c77f30c authored by jiaorz's avatar jiaorz

添加日志异常处理

parent 73a081fd
...@@ -38,10 +38,6 @@ ...@@ -38,10 +38,6 @@
<artifactId>spring-cloud-sleuth-zipkin</artifactId> <artifactId>spring-cloud-sleuth-zipkin</artifactId>
<version>2.1.0.RELEASE</version> <version>2.1.0.RELEASE</version>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.cloud</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
......
...@@ -12,16 +12,7 @@ public class AcceptFilter extends Filter<ILoggingEvent> { ...@@ -12,16 +12,7 @@ public class AcceptFilter extends Filter<ILoggingEvent> {
// MailServiceImpl mailService; // MailServiceImpl mailService;
@Override @Override
public FilterReply decide(ILoggingEvent event) { public FilterReply decide(ILoggingEvent event) {
if(event.getLoggerName().startsWith("com.xxfc.platform") || event.getLoggerName().startsWith("com.github.wxiaoqi") || event.getLoggerName().contains("Exception")) { if(event.getLoggerName().contains("Exception") || event.getLoggerName().contains("ERROR") || event.getLoggerName().startsWith("com.xxfc.platform") || event.getLoggerName().startsWith("com.github.wxiaoqi") || event.getLoggerName().contains("Exception")) {
if(event.getLoggerName().contains("Exception") || event.getLoggerName().contains("ERROR")) {
//邮件日志
// try {
// log.info("发送异常邮件,邮件内容:【服务器异常】: {}", event.getLoggerName() + ":" +event.getMessage());
// mailService.sendSimpleMail("jiaoruizhen@126.com", "服务器异常", event.getLoggerName() + ":" +event.getMessage());
// }catch (Exception e) {
// log.error("发送异常邮件失败,异常信息: {}", e);
// }
}
return FilterReply.ACCEPT; return FilterReply.ACCEPT;
} else { } else {
return FilterReply.DENY; return FilterReply.DENY;
......
...@@ -5,24 +5,40 @@ import com.github.wxiaoqi.security.common.exception.BaseException; ...@@ -5,24 +5,40 @@ import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.exception.auth.ClientTokenException; import com.github.wxiaoqi.security.common.exception.auth.ClientTokenException;
import com.github.wxiaoqi.security.common.exception.auth.UserInvalidException; import com.github.wxiaoqi.security.common.exception.auth.UserInvalidException;
import com.github.wxiaoqi.security.common.exception.auth.UserTokenException; import com.github.wxiaoqi.security.common.exception.auth.UserTokenException;
import com.github.wxiaoqi.security.common.log.Impl.MailServiceImpl;
import com.github.wxiaoqi.security.common.msg.BaseResponse; import com.github.wxiaoqi.security.common.msg.BaseResponse;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import static org.springframework.http.HttpStatus.NOT_EXTENDED;
/** /**
* Created by ace on 2017/9/8. * Created by ace on 2017/9/8.
*/ */
@ControllerAdvice("com.github.wxiaoqi.security") @ControllerAdvice
@ResponseBody @ResponseBody
public class GlobalExceptionHandler { public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {
private Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class); private Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);
/**
* 在controller里面内容执行之前,校验一些参数不匹配啊,Get post方法不对啊之类的
*/
@Override
protected ResponseEntity<Object> handleExceptionInternal(Exception ex, Object body, HttpHeaders headers, HttpStatus status, WebRequest request) {
logger.error(ex.getMessage(),ex);
return new ResponseEntity<>("出错了", NOT_EXTENDED);
}
@ExceptionHandler(ClientTokenException.class) @ExceptionHandler(ClientTokenException.class)
public BaseResponse clientTokenExceptionHandler(HttpServletResponse response, ClientTokenException ex) { public BaseResponse clientTokenExceptionHandler(HttpServletResponse response, ClientTokenException ex) {
response.setStatus(403); response.setStatus(403);
...@@ -50,7 +66,6 @@ public class GlobalExceptionHandler { ...@@ -50,7 +66,6 @@ public class GlobalExceptionHandler {
if(0 == ex.getStatus()) { if(0 == ex.getStatus()) {
response.setStatus(500); response.setStatus(500);
} }
sendEmail(ex);
return new BaseResponse(ex.getStatus(), ex.getMessage()); return new BaseResponse(ex.getStatus(), ex.getMessage());
} }
...@@ -58,17 +73,6 @@ public class GlobalExceptionHandler { ...@@ -58,17 +73,6 @@ public class GlobalExceptionHandler {
public BaseResponse otherExceptionHandler(HttpServletResponse response, Exception ex) { public BaseResponse otherExceptionHandler(HttpServletResponse response, Exception ex) {
response.setStatus(500); response.setStatus(500);
logger.error(ex.getMessage(),ex); logger.error(ex.getMessage(),ex);
sendEmail(ex);
return new BaseResponse(CommonConstants.EX_OTHER_CODE, ex.getMessage()); return new BaseResponse(CommonConstants.EX_OTHER_CODE, ex.getMessage());
} }
public void sendEmail(Exception ex) {
try {
logger.info("发送异常邮件,邮件内容:【服务器异常】: {}", ex.getMessage() + ":" + ex);
MailServiceImpl mailService = new MailServiceImpl();
mailService.sendSimpleMail("jiaoruizhen@126.com", "服务器异常", ex.getMessage() + ":" + ex);
}catch (Exception e) {
logger.error("发送异常邮件失败,异常信息: {}", e);
}
}
} }
package com.github.wxiaoqi.security.common.log.Impl;
import com.github.wxiaoqi.security.common.util.process.SystemConfig;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
@Slf4j
public class MailServiceImpl {
@Autowired
private JavaMailSender mailSender;
public void sendSimpleMail(String to, String subject, String content) {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(SystemConfig.EMAILADDRESS);
message.setTo(to);
message.setSubject(subject);
message.setText(content);
try {
mailSender.send(message);
log.info("简单邮件已经发送。");
}catch (Exception e) {
log.error("发送简单邮件时发生异常!", e);
}
}
}
\ No newline at end of file
...@@ -36,6 +36,10 @@ ...@@ -36,6 +36,10 @@
</exclusions> </exclusions>
<version>4.4.2</version> <version>4.4.2</version>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency> <dependency>
<groupId>com.aliyun</groupId> <groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dysmsapi</artifactId> <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
......
package com.xxfc.platform.universal.biz;
import com.github.wxiaoqi.security.common.util.process.SystemConfig;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@Slf4j
@Service
public class MailServiceBiz {
@Autowired
JavaMailSender mailSender;
public void sendSimpleMail(String to, String subject, String content) {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(SystemConfig.EMAILADDRESS);
message.setTo(to);
message.setSubject(subject);
message.setText(content);
try {
mailSender.send(message);
log.info("简单邮件已经发送。{}", message);
}catch (Exception e) {
log.error("发送简单邮件时发生异常!", e);
}
}
public void run(String to, String subject, String content) {
ExecutorService executorService = Executors.newCachedThreadPool();
executorService.submit(new Task(to, subject, content));
}
@Data
class Task implements Runnable{
private String toUser;
private String subject;
private String content;
public Task(String toUser, String subject, String content) {
this.toUser = toUser;
this.subject = subject;
this.content = content;
}
@Override
public void run() {
sendSimpleMail(toUser, subject, content);
}
}
}
\ No newline at end of file
package com.xxfc.platform.universal.controller;
import com.xxfc.platform.universal.biz.MailServiceBiz;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("mail")
public class EmailSendController {
@Autowired
MailServiceBiz mailServiceBiz;
@GetMapping(value = "/app/unauth/send")
public void senEmail(String toUser, String subject, String content) {
mailServiceBiz.run(toUser, subject, content);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment