日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

基于Spring Boot,為網(wǎng)絡(luò)請(qǐng)求添加唯一日志id

來源: 責(zé)編: 時(shí)間:2024-01-02 09:31:09 210觀看
導(dǎo)讀1 簡(jiǎn)介在Web應(yīng)用程序的世界中,有效的請(qǐng)求監(jiān)控和可追蹤性對(duì)于維護(hù)系統(tǒng)完整性和診斷問題至關(guān)重要。Spring Boot是一種流行的Java框架,用于構(gòu)建應(yīng)用程序,并提供強(qiáng)大的日志記錄功能。為了進(jìn)一步豐富這一功能,可以通過為每個(gè)傳

1 簡(jiǎn)介

在Web應(yīng)用程序的世界中,有效的請(qǐng)求監(jiān)控和可追蹤性對(duì)于維護(hù)系統(tǒng)完整性和診斷問題至關(guān)重要。Spring Boot是一種流行的Java框架,用于構(gòu)建應(yīng)用程序,并提供強(qiáng)大的日志記錄功能。為了進(jìn)一步豐富這一功能,可以通過為每個(gè)傳入請(qǐng)求添加唯一標(biāo)識(shí)符來增強(qiáng)日志記錄能力。這種簡(jiǎn)潔而強(qiáng)大的實(shí)踐使開發(fā)人員能夠跟蹤和分析單個(gè)請(qǐng)求的流程,簡(jiǎn)化調(diào)試,并增強(qiáng)整個(gè)系統(tǒng)的可靠性。ycw28資訊網(wǎng)——每日最新資訊28at.com

本文我們強(qiáng)調(diào)在Spring Boot中為日志添加唯一標(biāo)識(shí)符的重要性,介紹其實(shí)現(xiàn)方式以及其為應(yīng)用程序開發(fā)和維護(hù)帶來的眾多優(yōu)勢(shì)好處。ycw28資訊網(wǎng)——每日最新資訊28at.com

2 問題描述

如今,每個(gè)服務(wù)通常都有多個(gè)服務(wù)器實(shí)例。有兩種方法可以查看日志,一種是逐個(gè)訪問各個(gè)服務(wù)器實(shí)例以查看日志,另一種是收集所有服務(wù)器的日志到一個(gè)集中地點(diǎn)進(jìn)行查看。通常情況下,人們會(huì)選擇第二種方法,使用像GCP中的Log Explorer這樣的工具來搜索和分析日志。然而,由于來自多個(gè)服務(wù)器的大量日志,追蹤這些日志變得困難。ycw28資訊網(wǎng)——每日最新資訊28at.com

此外,即使對(duì)于只有一個(gè)服務(wù)的單個(gè)服務(wù)器,由于并發(fā)請(qǐng)求和線程,日志會(huì)被打印出很多條。其中一個(gè)主要問題是日志打印的交錯(cuò)性,很難跟蹤打印出的日志。ycw28資訊網(wǎng)——每日最新資訊28at.com

3 解決方案

為了解決上述問題,需要為每個(gè)日志條目關(guān)聯(lián)一種標(biāo)識(shí)符。我們可以生成一個(gè)唯一的ID,然后將該ID分配給特定請(qǐng)求的所有日志。因此,為特定請(qǐng)求生成的所有日志都具有唯一的ID。借助這個(gè)ID,可以便捷地跟蹤日志。我們可以在日志中搜索此ID并獲取特定請(qǐng)求的所有日志。在Spring Boot中實(shí)現(xiàn)這一點(diǎn),可以使用AOP。ycw28資訊網(wǎng)——每日最新資訊28at.com

面向方面的編程(AOP)是一種編程范式,允許開發(fā)人員將橫切關(guān)注點(diǎn)(如日志記錄、安全性和事務(wù)管理)與核心業(yè)務(wù)邏輯分開模塊化,促進(jìn)代碼的可重用性和可維護(hù)性。它通過引入“切面”在代碼庫的不同部分應(yīng)用,而無需修改原始代碼。ycw28資訊網(wǎng)——每日最新資訊28at.com

首先,需要?jiǎng)?chuàng)建一個(gè)請(qǐng)求過濾器,如下所示:ycw28資訊網(wǎng)——每日最新資訊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;    }}

上述代碼對(duì)每個(gè)API請(qǐng)求運(yùn)行一次,并將相同的唯一ID添加到為特定請(qǐng)求生成的所有日志中。接下來,需要將上述AOP過濾器注冊(cè)為一個(gè)bean,如下所示:ycw28資訊網(wǎng)——每日最新資訊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;    }}

然后,需要在日志配置文件中添加一個(gè)appender,如下所示:ycw28資訊網(wǎng)——每日最新資訊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 結(jié)語

在Spring Boot中為每個(gè)請(qǐng)求的日志實(shí)現(xiàn)唯一標(biāo)識(shí)符可以通過關(guān)聯(lián)應(yīng)用程序的不同組件中的日志,特別是在并發(fā)情況下,提供更好的可追蹤性和調(diào)試能力。這個(gè)唯一標(biāo)識(shí)符有助于跟蹤請(qǐng)求的流程,識(shí)別潛在問題,并提高整個(gè)系統(tǒng)的可觀察性。ycw28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-55176-0.html基于Spring Boot,為網(wǎng)絡(luò)請(qǐng)求添加唯一日志id

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 九個(gè)技巧讓你的PyTorch模型訓(xùn)練飛快!

下一篇: 九個(gè)技巧讓你的PyTorch模型訓(xùn)練飛快!

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 主站蜘蛛池模板: 新河县| 临清市| 南投县| 东阿县| 保康县| 赤城县| 长兴县| 嘉善县| 大冶市| 东平县| 哈巴河县| 靖安县| 峨山| 平和县| 南开区| 剑川县| 郯城县| 禄丰县| 佛坪县| 枣强县| 漳州市| 防城港市| 达日县| 金湖县| 瑞昌市| 巴马| 静海县| 扎赉特旗| 新巴尔虎右旗| 土默特左旗| 丽水市| 呼和浩特市| 河北区| 仁怀市| 栾川县| 青阳县| 武威市| 庆城县| 保定市| 镇赉县| 德江县|