引言
本文代码已提交至Github(版本号:
15880edfd7251ec4fc7950ff346056efe46f4272
),有兴趣的同学可以下载来看看:https://github.com/ylw-github/taodong-shop
前面的博客把ELK+Kafka的原理以及功能都实现了,有兴趣的同学可以参阅下:
- 《淘东电商项目(48) -ELK+Kafka分布式日志收集(原理篇)》
- 《淘东电商项目(49) -ELK+Kafka分布式日志收集(docker下搭建kafka)》
- 《淘东电商项目(50) -ELK+Kafka分布式日志收集(实现篇)》
本文在前面的基础上讲解全局异常捕获,并通过Kafka发送到ELK。
本文目录结构:
1.代码
实现很简单,直接定义一个全局异常捕获类,直接在捕获方法里面发送错误日志到Kafka即可,代码如下:
/** * description: 全局捕获异常 * create by: YangLinWei * create time: 2020/4/29 5:20 下午 */ @ControllerAdvice @Slf4j public class GlobalExceptionHandler { @Autowired private KafkaSender<JSONObject> kafkaSender; @ExceptionHandler(RuntimeException.class) @ResponseBody public JSONObject exceptionHandler(Exception e) { // 1.封装异常日志信息 JSONObject errorJson = new JSONObject(); JSONObject logJson = new JSONObject(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 设置日期格式 logJson.put("request_time", df.format(new Date())); logJson.put("error_info", e); errorJson.put("request_error", logJson); kafkaSender.send(errorJson); // 2. 返回错误信息 JSONObject result = new JSONObject(); result.put("code", 500); result.put("msg", "系统错误"); return result; } }
在商品搜索服务模拟一个异常:
2.测试
启动ELK+Kafa环境,然后在浏览器请求http://localhost:8500/search?name=pg模拟抛出异常:
可以看到logstash控制台收集到错误日志:
在kibana也能查看到采集的错误日志:
本文完!