您当前的位置: 首页 >  kafka

杨林伟

暂无认证

  • 1浏览

    0关注

    3337博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

淘东电商项目(51) -全局异常日志采集(ELK+Kafka)

杨林伟 发布时间:2020-04-29 17:33:56 ,浏览量:1

引言

本文代码已提交至Github(版本号:15880edfd7251ec4fc7950ff346056efe46f4272),有兴趣的同学可以下载来看看:https://github.com/ylw-github/taodong-shop

前面的博客把ELK+Kafka的原理以及功能都实现了,有兴趣的同学可以参阅下:

  • 《淘东电商项目(48) -ELK+Kafka分布式日志收集(原理篇)》
  • 《淘东电商项目(49) -ELK+Kafka分布式日志收集(docker下搭建kafka)》
  • 《淘东电商项目(50) -ELK+Kafka分布式日志收集(实现篇)》

本文在前面的基础上讲解全局异常捕获,并通过Kafka发送到ELK。

本文目录结构: l____引言 l____ 1. 代码 l____ 2. 测试

1.代码

实现很简单,直接定义一个全局异常捕获类,直接在捕获方法里面发送错误日志到Kafka即可,代码如下:

/**
 * description: 全局捕获异常
 * create by: YangLinWei
 * create time: 2020/4/29 5:20 下午
 */
@ControllerAdvice
@Slf4j
public class GlobalExceptionHandler {
	@Autowired
	private KafkaSender 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也能查看到采集的错误日志: 在这里插入图片描述

本文完!

关注
打赏
1662376985
查看更多评论
立即登录/注册

微信扫码登录

0.1305s