在上一篇文章中,我们介绍了采用zuul搭建一个网关,做了一个最简单的调用测试,正常是可以访问的。在这一章中,我们介绍网关的日志及全局异常。
日志记录了谁通过网关,做了什么事。
全局异常拦截那些发生问题的不可见的异常。
在开始之前,我们需要给pom文件里面新增两个包,lambok及fastjson
<!--swagger2工具 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.8.8</version>
</dependency>
<!-- lombok支持 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- 阿里json -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.66</version>
</dependency>
备注:很多人喜欢用fastjson,最近fastjson爆出了两次服务器级别的bug,注意升级到最新版。
整体的项目结构如下:
项目结构
添加日志请求
这里的日志请求,网上一般的做法都是把请求前的日志与请求后的返回日志放在一起,用到了ZuulFilter里面filterType为POST_TYPE,这里我们分开来做,两个日志过滤请求器,一个用于请求前,一个用于请求后数据的数据返回,代码如下
请求前日志类LogsPreFilter:
/**
* All rights Reserved, Designed By OprCalf
* Copyright: Copyright(C) 2016-2020
* Company LengYin Ltd.
*/
package com.platform.gateway.filter;
import java.io.InputStream;
import java.nio.charset.Charset;
import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;
import org.springframework.stereotype.Component;
import org.springframework.util.StreamUtils;
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import lo