当前位置:首页 > 科技  > 软件

基于Spring Boot,为网络请求添加唯一日志id

来源: 责编: 时间:2024-01-02 09:31:09 269观看
导读1 简介在Web应用程序的世界中,有效的请求监控和可追踪性对于维护系统完整性和诊断问题至关重要。Spring Boot是一种流行的Java框架,用于构建应用程序,并提供强大的日志记录功能。为了进一步丰富这一功能,可以通过为每个传

1 简介

在Web应用程序的世界中,有效的请求监控和可追踪性对于维护系统完整性和诊断问题至关重要。Spring Boot是一种流行的Java框架,用于构建应用程序,并提供强大的日志记录功能。为了进一步丰富这一功能,可以通过为每个传入请求添加唯一标识符来增强日志记录能力。这种简洁而强大的实践使开发人员能够跟踪和分析单个请求的流程,简化调试,并增强整个系统的可靠性。WYS28资讯网——每日最新资讯28at.com

本文我们强调在Spring Boot中为日志添加唯一标识符的重要性,介绍其实现方式以及其为应用程序开发和维护带来的众多优势好处。WYS28资讯网——每日最新资讯28at.com

2 问题描述

如今,每个服务通常都有多个服务器实例。有两种方法可以查看日志,一种是逐个访问各个服务器实例以查看日志,另一种是收集所有服务器的日志到一个集中地点进行查看。通常情况下,人们会选择第二种方法,使用像GCP中的Log Explorer这样的工具来搜索和分析日志。然而,由于来自多个服务器的大量日志,追踪这些日志变得困难。WYS28资讯网——每日最新资讯28at.com

此外,即使对于只有一个服务的单个服务器,由于并发请求和线程,日志会被打印出很多条。其中一个主要问题是日志打印的交错性,很难跟踪打印出的日志。WYS28资讯网——每日最新资讯28at.com

3 解决方案

为了解决上述问题,需要为每个日志条目关联一种标识符。我们可以生成一个唯一的ID,然后将该ID分配给特定请求的所有日志。因此,为特定请求生成的所有日志都具有唯一的ID。借助这个ID,可以便捷地跟踪日志。我们可以在日志中搜索此ID并获取特定请求的所有日志。在Spring Boot中实现这一点,可以使用AOP。WYS28资讯网——每日最新资讯28at.com

面向方面的编程(AOP)是一种编程范式,允许开发人员将横切关注点(如日志记录、安全性和事务管理)与核心业务逻辑分开模块化,促进代码的可重用性和可维护性。它通过引入“切面”在代码库的不同部分应用,而无需修改原始代码。WYS28资讯网——每日最新资讯28at.com

首先,需要创建一个请求过滤器,如下所示:WYS28资讯网——每日最新资讯28at.com

/** * A filter that adds a key to the Mapped Diagnostic Context (MDC) to each request so you can print a unique id in the log messages of each request **/@EqualsAndHashCode(callSuper = false)@Component@Slf4jpublic class Slf4jMDCFilter extends OncePerRequestFilter {    @Override    protected void doFilterInternal(final HttpServletRequest request, final HttpServletResponse response, final FilterChain chain) {        try {            MDC.put(MDC_UUID_TOKEN_KEY, UUID.randomUUID().toString());            chain.doFilter(request, response);        } catch (Exception ex) {            log.error(ERROR_FORMAT, "Exception occurred in filter while setting UUID for logs", ex);        } finally {            MDC.remove(MDC_UUID_TOKEN_KEY);        }    }    @Override    protected boolean isAsyncDispatch(final HttpServletRequest request) {        return false;    }    @Override    protected boolean shouldNotFilterErrorDispatch() {        return false;    }}

上述代码对每个API请求运行一次,并将相同的唯一ID添加到为特定请求生成的所有日志中。接下来,需要将上述AOP过滤器注册为一个bean,如下所示:WYS28资讯网——每日最新资讯28at.com

@Configuration@RequiredArgsConstructorpublic class BeanConfig {    private final Slf4jMDCFilter slf4jMDCFilter;    @Bean    public FilterRegistrationBean<Slf4jMDCFilter> servletRegistrationBean() {        final FilterRegistrationBean<Slf4jMDCFilter> filterRegistrationBean = new FilterRegistrationBean<>();        filterRegistrationBean.setFilter(slf4jMDCFilter);        filterRegistrationBean.setOrder(2);        return filterRegistrationBean;    }}

然后,需要在日志配置文件中添加一个appender,如下所示:WYS28资讯网——每日最新资讯28at.com

<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">    <layout class="ch.qos.logback.classic.PatternLayout">        <Pattern>            %black(%d{ISO8601}) %X{Slf4jMDCFilter.UUID} %highlight(%-5level) [%blue(%t)] %yellow(%C{1}.): %msg%n%throwable        </Pattern>    </layout></appender>

4 结语

在Spring Boot中为每个请求的日志实现唯一标识符可以通过关联应用程序的不同组件中的日志,特别是在并发情况下,提供更好的可追踪性和调试能力。这个唯一标识符有助于跟踪请求的流程,识别潜在问题,并提高整个系统的可观察性。WYS28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-55176-0.html基于Spring Boot,为网络请求添加唯一日志id

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 九个技巧让你的PyTorch模型训练飞快!

下一篇: 九个技巧让你的PyTorch模型训练飞快!

标签:
  • 热门焦点
  • K60 Pro官方停产 第三方瞬间涨价

    虽然没有官方宣布,但Redmi的一些高管也已经透露了,Redmi K60 Pro已经停产且不会补货,这一切都是为了即将到来的K60 Ultra铺路,属于厂家的正常操作。但有意思的是该机在停产之后
  • Mate60手机壳曝光 致敬自己的经典设计

    8月3日消息,今天下午博主数码闲聊站带来了华为Mate60的第三方手机壳图,可以让我们在真机发布之前看看这款华为全新旗舰的大致轮廓。从曝光的图片看,Mate 60背后摄像头面积依然
  • 2023年,我眼中的字节跳动

    此时此刻(2023年7月),字节跳动从未上市,也从未公布过任何官方的上市计划;但是这并不妨碍它成为中国最受关注的互联网公司之一。从2016-17年的抖音强势崛起,到2018年的&ldquo;头腾
  • 2天涨粉255万,又一赛道在抖音爆火

    来源:运营研究社作者 | 张知白编辑 | 杨佩汶设计 | 晏谈梦洁这个暑期,旅游赛道彻底火了:有的「地方」火了&mdash;&mdash;贵州村超旅游收入 1 个月超过 12 亿;有的「博主」火了&m
  • 中国家电海外掘金正当时|出海专题

    作者|吴南南编辑|胡展嘉运营|陈佳慧出品|零态LT(ID:LingTai_LT)2023年,出海市场战况空前,中国创业者在海外纷纷摩拳擦掌,以期能够把中国的商业模式、创业理念、战略打法输出海外,他们依
  • 花7万退货退款无门:谁在纵容淘宝珠宝商家造假?

    来源:极点商业作者:杨铭在淘宝购买珠宝玉石后,因为保证金不够赔付,店铺关闭,退货退款难、维权无门的比比皆是。&ldquo;提供相关产品鉴定证书,支持全国复检,可以30天无理由退换货。&
  • 华为HarmonyOS 4.0将于8月4日发布 或搭载AI大模型技术

    华为宣布HarmonyOS4.0将于8月4日正式发布。此前,华为已经针对开发者公布了HarmonyOS4.0,以便于开发者提前进行适配,也因此被曝光出了一些新系统的特性
  • iQOO 11S屏幕细节公布:首发三星2K E6全感屏 安卓最好的直屏手机

    日前iQOO手机官方宣布,新一代电竞旗舰iQOO 11S将会在7月4日19:00正式与大家见面。随着发布时间的日益临近,官方关于该机的预热也更加密集,截至目前已
  • 微软发布Windows 11新版 引入全新任务栏状态

    近日,微软发布了Windows 11新版,而Build 22563更新主要引入了几周前曝光的平板模式任务栏等,系统更流畅了。更新中,Windows 11加入了专门针对平板优化的任务栏
Top