【借力打力】记一次由于堆栈信息不详细的错误排查方法,利用访问日志进行定位问题

本文讲述了一次遇到参数转换问题时,如何通过供应商排查、Nginx日志、运维工具和Tomcat日志配置来定位问题的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【借力打力】记一次由于堆栈信息不详细的错误排查方法,利用访问日志进行定位问题

1,背景

异常信息每隔50分钟显示一次,如图所示。
在这里插入图片描述
在这里插入图片描述

能够看出是控制器上出现参数转换失效的问题,但是具体的是哪一个控制器在异常堆栈信息中也没有打印出来,这给问题定位带来了一定的难度

2,排查步骤

2.1 调用方问题

系统接收几个供应商的数据推送,推送失败的会进行数据补偿,首先想到是不是某个供应商推送数据失败,使用调度任务每隔50分钟进行请求,导致一致出现数据失败和请求。这种情况不好排查,但是还是咨询了其中一个,他的日志没有出现异常,但他提供了一个很好地思路,使用Nginx进行定位。

2.2 Nginx手段

通过Nginx的代理访问日志文件能够看到接口调用的详情,但是笔者的Nginx没有对特殊的后端接口进行代理,该方法本来是一种很好地方法,但是在这种情况下失效了。

2.3 运维工具辅助

想到运维人员记录了访问日志,反馈的结果就是没有在给定的时间范围内没有发现数据交互。排除了外来供应商调用接口的情况。

2.4 嵌入tomcat日志记录

既然通过Nginx的代理可以进行排查,于是想到了利用tomcat进行问题定位,举一反三,通过以下配置进行开启。

开启嵌入tomcat配置项为:

server:
  #开启tomcat日志记录功能
  tomcat:
    basedir: C:\zcadmin\zcAdmin-logs\tomcat
    background-processor-delay: 30
    port-header: X-Forwarded-Port
    protocol-header: X-Forwarded-Proto
    protocol-header-https-value: https
    redirect-context-root: true
    remote-ip-header: X-Forwarded-For
    uri-encoding: UTF-8
    accesslog:
      enabled: true
      buffered: true
      directory: .\log
      file-date-format: .yyyy-MM-dd
      pattern: '%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i" %D ms'
      prefix: access_log
      rename-on-rotate: false
      request-attributes-enabled: false
      rotate: true
      suffix: .log

打印的日志格式为:

127.0.0.1 - - [03/Nov/2023:15:05:06 +0800] "GET /api/big-screen/getLatestAssetAlertLog HTTP/1.1" 200 5532 "http://localhost:8013/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" 16 ms

3,结果

通过时间戳就可以锁定异常调用的接口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追寻上飞

鼓励一下这只勤劳的小蜜蜂吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值