iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么在zuul上做日志处理
  • 567
分享到

怎么在zuul上做日志处理

2023-06-05 03:06:44 567人浏览 泡泡鱼
摘要

本篇内容主要讲解“怎么在zuul上做日志处理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在zuul上做日志处理”吧!由于zuul作为api网关,所有的请求都经过这里,所以在网关上,可以做请

本篇内容主要讲解“怎么在zuul上做日志处理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在zuul上做日志处理”吧!

由于zuul作为api网关,所有的请求都经过这里,所以在网关上,可以做请求相关的日志处理。

我的需求是这样的,需要记录请求的 url,ip地址,参数,请求发生的时间,整个请求的耗时,请求的响应状态,

甚至请求响应的结果等。

很显然,需要实现这样的一个功能,需要写一个ZuulFliter,它应该是在请求发送给客户端之前做处理,并且在

route过滤器路由之后,在默认的情况下,这个过滤器的order应该为500-1000之间。那么如何获取这些我需要的

日志信息呢?找RequestContext,在请求的生命周期里这个对象里,存储了整个请求的所有信息。

现在编码,在代码的注释中,做了详细的说明,代码如下:

@Componentpublic class LoggerFilter extends ZuulFilter {      @Override    public String filterType() {        return FilterConstants.POST_TYPE;    }    @Override    public int filterOrder() {        return FilterConstants.SEND_RESPONSE_FILTER_ORDER - 1;    }    @Override    public boolean shouldFilter() {        return true;    }    @Override    public Object run() {        RequestContext context = RequestContext.getCurrentContext();        httpservletRequest request = context.getRequest();        String method = request.getMethod();//氢气的类型,post get ..        Map<String, String> params = HttpUtils.getParams(request);        String paramsStr = params.toString();//请求的参数        long statrtTime = (long) context.get("startTime");//请求的开始时间        Throwable throwable = context.getThrowable();//请求的异常,如果有的话        request.getRequestURI();//请求的uri        HttpUtils.getIpAddress(request);//请求的iP地址        context.getResponseStatusCode();//请求的状态        long duration=System.currentTimeMillis() - statrtTime);//请求耗时        return null;    }}

现在读者也许有疑问,如何得到的statrtTime,即请求开始的时间,其实这需要另外一个过滤器,在网络请求route之前(大部分耗时都在route这一步),在过滤器中,在RequestContext存储一个时间即可,另写一个过滤器,代码如下:

@Componentpublic class AccessFilter extends ZuulFilter {    @Override    public String filterType() {        return "pre";    }    @Override    public int filterOrder() {        return 0;    }    @Override    public boolean shouldFilter() {        return true;    }    @Override    public Object run() {        RequestContext ctx = RequestContext.getCurrentContext();        ctx.set("startTime",System.currentTimeMillis());               return null;    }}

可能还有这样的需求,我需要将响应结果,也要存储在log中,在之前已经分析了,在route结束后,将从具体服务获取的

响应流存储在RequestContext中,在SendResponseFilter过滤器写入在HttpServletResponse中,最终返回给客户端。那么我只需要在SendResponseFilter写入响应流之前把响应流写入到 log日志中即可,那么会引发另外一个问题,因为响应流写入到 log后,RequestContext就没有响应流了,在SendResponseFilter就没有流输入到HttpServletResponse中,导致客户端没有任何的返回数据,那么解决的办法是这样的:

InputStream inputStream =RequestContext.getCurrentContext().getResponseDataStream();InputStream newInputStream= copy(inputStream);transerferTolog(inputStream);RequestContext.getCurrentContext().setResponseDataStream(newInputStream);

从RequestContext获取到流之后,首先将流 copy一份,将流转化下字符串,存在日志中,再set到RequestContext中,
这样SendResponseFilter就可以将响应返回给客户端。这样的做法有点影响性能,如果不是字符流,可能需要做更多的处理工作。

到此,相信大家对“怎么在zuul上做日志处理”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 怎么在zuul上做日志处理

本文链接: https://www.lsjlt.com/news/241139.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么在zuul上做日志处理
    本篇内容主要讲解“怎么在zuul上做日志处理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在zuul上做日志处理”吧!由于zuul作为api网关,所有的请求都经过这里,所以在网关上,可以做请...
    99+
    2023-06-05
  • 如何在Linux上使用PHP处理大数据日志?
    在当今数字化时代,数据日志的处理变得越来越重要。而对于开发人员来说,如何高效地处理大量数据日志是一项重要的技能。在Linux系统上,使用PHP来处理大数据日志可以提高处理效率和节省时间。在本文中,我们将介绍如何在Linux上使用PHP来处...
    99+
    2023-09-10
    linux 日志 大数据
  • RedHat 9上怎么用iptables做NAT网和记录日志
    这篇文章给大家分享的是有关RedHat 9上怎么用iptables做NAT网和记录日志的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。RedHat 9上用iptables做NAT网关- -我使用中的设置一、将下列内...
    99+
    2023-06-16
  • 怎么在MySQL中迁移线上日志库
    怎么在MySQL中迁移线上日志库?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。    首先看日志库的情况:日志库中数据量大于5000w的大表有...
    99+
    2023-06-14
  • SQL Server中怎么处理日志文件
    本篇文章为大家展示了SQL Server中怎么处理日志文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。  SQLServer日志文件归纳及充斥怎么处理  交易日志...
    99+
    2024-04-02
  • spark怎么处理大量日志文件
    Spark可以使用以下方法来处理大量日志文件: 使用Spark的文件输入源:Spark可以从HDFS、S3等分布式存储系统中读取...
    99+
    2024-04-02
  • node中怎么对日志进行处理
    本篇文章为大家展示了node中怎么对日志进行处理,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、技术选型选择了3种主流的技术进行对比:1.1 log4jslog4js是一种node日志管理工具,可...
    99+
    2023-06-03
  • 如何在Django中处理日志记录?
    Django是一个流行的Web框架,用于开发高性能和可扩展的Web应用程序。在开发Web应用程序时,日志记录是一个非常重要的组成部分。日志记录可以帮助我们跟踪应用程序中的错误、异常和性能问题。在本文中,我们将讨论如何在Django中处理日志...
    99+
    2023-09-04
    日志 javascript django
  • Linux日志处理命令logrotate怎么用
    这篇文章主要介绍了Linux日志处理命令logrotate怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Linux使用某些软件的时候会产生日志文件,而这些软件本身对日志...
    99+
    2023-06-27
  • 如何使用Python和numpy在Linux上处理和可视化日志?
    在Linux系统上处理和可视化日志是很常见的任务。Python和numpy是常用的工具,可以帮助我们轻松完成这项任务。在本文中,我们将介绍如何使用Python和numpy在Linux上处理和可视化日志。 安装Python和numpy 首...
    99+
    2023-08-10
    numpy 日志 linux
  • Go语言和NumPy:如何在Linux系统上处理大量日志?
    在当今数字化时代,日志记录是任何应用程序的重要组成部分。通过日志记录,应用程序可以追踪和记录其内部运行过程,帮助开发人员诊断和解决问题。由于日志记录的重要性,处理大量日志数据已成为一个挑战。本文将介绍如何使用Go语言和NumPy在Linu...
    99+
    2023-07-06
    linux numy 日志
  • Python在Linux上如何管理缓存和日志?
    随着Web应用程序的不断发展,缓存和日志管理成为了越来越重要的任务。Python是一种强大的编程语言,可以用于在Linux系统上管理缓存和日志。在本文中,我们将介绍如何使用Python在Linux上管理缓存和日志。 一、缓存管理 缓存的...
    99+
    2023-10-10
    linux 缓存 日志
  • 如何在Python中处理shell中的日志?
    Python语言在日志处理方面具有很好的优势,它可以轻松地处理shell中的日志。在本文中,我们将学习如何使用Python语言处理shell中的日志文件。 首先,让我们来了解一下什么是日志文件。日志文件是指记录系统或应用程序运行状态的文件,...
    99+
    2023-10-27
    path 日志 shell
  • NumPy和Go语言:在Linux系统上处理日志的最佳选择?
    在现代的计算机系统中,日志文件是非常重要的一部分,它们记录了系统的运行状态、错误信息以及其他重要的数据。在Linux系统中,日志文件通常被保存在/var/log目录下,它们可以包含各种格式的数据,例如文本、JSON或XML等。处理这些日志...
    99+
    2023-07-06
    linux numy 日志
  • 如何在Linux上使用PHP处理不同数据类型的日志?
    在Linux上使用PHP处理不同数据类型的日志是一个非常常见的任务。在本文中,我们将介绍如何使用PHP处理不同类型的日志文件。 一、处理文本日志 文本日志是最常见的日志类型。在PHP中,我们可以使用fopen()函数打开文本文件,使用fge...
    99+
    2023-11-10
    linux 日志 数据类型
  • Mysql的MySql-bin.0000X日志文件怎么处理
    本篇内容主要讲解“Mysql的MySql-bin.0000X日志文件怎么处理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Mysql的MySql-bin.000...
    99+
    2024-04-02
  • sql server数据库日志满了怎么处理
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-22
  • java底层JDK Logging日志模块怎么处理
    这篇文章主要介绍“java底层JDK Logging日志模块怎么处理”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“java底层JDK Logging日志模块怎么处理”文章能帮助大...
    99+
    2023-06-29
  • 如何在Go中同时处理Django和日志?
    在现代的Web应用程序中,通常需要同时处理多个任务。例如,您可能需要使用Django框架来构建Web应用程序,并使用日志来记录应用程序的运行情况。在这种情况下,您可能想知道如何在Go中同时处理Django和日志。在本文中,我们将探讨如何在G...
    99+
    2023-08-24
    日志 并发 django
  • ORA-00313 ORA-00312 redo日志报错怎么处理
    小编给大家分享一下ORA-00313 ORA-00312 redo日志报错怎么处理,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作