Springcloud Gateway网关日志这样打才完美
-
这里只进行日志的打印输出,不做收集,收集汇总工作可以结合ELK,监控日志文件进行同步。 实现方式使用 gateway 的 GlobalFilter 过滤器。 请求日志打印的过滤器排序尽量低一些。 打印日志时,注意避免多次打印造成并发请求日志错乱,可以拼接一个大的日志串,一次打印输出。
RequestLogFilter
增加一个请求入参过滤器,用来打印入参信息。
@Slf4j
@Configuration
@ConditionalOnProperty(value = "log.request.enabled", havingValue = "true", matchIfMissing = true)
public class RequestLogFilter implements GlobalFilter, Ordered {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
ServerHttpRequest request = exchange.getRequest();
// 打印请求路径
String path = request.getPath().pathWithinApplication().value();
// 打印请求url
String requestUrl = this.getOriginalRequestUrl(
