当前位置: 首页 > news >正文

【Linux】Java线上问题,一分钟日志定位

【Linux】Java线上问题,一分钟日志定位

  • 1. 查看异常堆栈
  • 2. 实时叮新日志
  • 3. 翻历史/压缩日志
  • 4. 统计异常数量
  • 5. 多种异常一起查
  • 6. 反向过滤
  • 7. 同时满足多个关键字查询
  • 8. 定位最近一次异常
  • 9. 异常排行榜

1. 查看异常堆栈

# 在 a.log 文件中查找包含 NullPointerException 的行,并显示该行以及其后的 50 行,然后通过分页工具 less 逐页查看结果。
grep -n -A 50 "NullPointerException" a.log | less
[root@iv-ye20h65dz45i3z346rvs ~]# grep -n -A 50 "Exception" log.out | less 

在这里插入图片描述

2. 实时叮新日志

应用到的场景:应用在跑随时可能抛异常

tail -f log.out | grep -n -A 50 "Exception" 

1️⃣ tail -f log.out

  • tail:查看文件的结尾部分。
  • -f:表示 follow,即“跟随”文件内容的变化。
  • 当 log.out 文件新增内容时,会实时输出新增内容到终端。

2️⃣ | grep -n -A 50 “Exception”

  • |:管道,把 tail -f 输出的内容传给 grep。

grep -n -A 50 “Exception”:

  • -n:显示匹配行的行号。
  • -A 50:显示匹配行之后的 50 行内容。
  • “Exception”:匹配的关键字。

3. 翻历史/压缩日志

老日志切分打包,照样可以查

[root@iv-ye20h65dz45i3z346rvs ~]# grep -n -H -A 50 "Exception" log.out

在这里插入图片描述

  • -n:显示匹配行的 行号。
  • -H:显示匹配行的 文件名。 在只搜索一个文件时效果不明显,但如果同时搜索多个文件,会显示是哪一个文件匹配的。
  • -A 50:显示匹配行 之后的 50 行 内容。
  • “Exception”:要搜索的关键字。
  • log.out:要搜索的文件。

zgrep -n -H -A 50 "Exception" log.out.gz

在这里插入图片描述

4. 统计异常数量

统计异常数量用于区分是偶发还是高频错误

grep -c "Exception" log.out[root@iv-ye20h65dz45i3z346rvs ~]# grep -c "Exception" log.out
6

5. 多种异常一起查

[root@iv-ye20h65dz45i3z346rvs ~]# grep -n -A 50 -E "NullPointerException|JSONException" log.out

在这里插入图片描述

6. 反向过滤

grep -n -A 20 "JSONException" log.out | grep -v "ERROR"

在这里插入图片描述

  • 从 log.out 中找到所有包含 JSONException 的行及其后 20 行。
  • 过滤掉其中包含 “ERROR” 的行。
  • 输出剩余行,带行号。

7. 同时满足多个关键字查询

[root@iv-ye20h65dz45i3z346rvs ~]# grep "Exception" log.out | grep "JSONException"
cn.hutool.json.JSONException: Unclosed tag html at 265 [character 162 line 6]
cn.hutool.json.JSONException: Unclosed tag html at 265 [character 162 line 6]
cn.hutool.json.JSONException: Unclosed tag html at 265 [character 162 line 6]
cn.hutool.json.JSONException: Unclosed tag html at 265 [character 162 line 6]
cn.hutool.json.JSONException: Unclosed tag html at 265 [character 162 line 6]
cn.hutool.json.JSONException: Unclosed tag html at 265 [character 162 line 6]

8. 定位最近一次异常

[root@iv-ye20h65dz45i3z346rvs ~]# tac log.out | grep -m 1 "Exception" -A 20
cn.hutool.json.JSONException: Unclosed tag html at 265 [character 162 line 6]
2025-08-19 11:18:31.448 [Thread-5] ERROR c.a.i.k.g.r.e.ExtractRpcImpl - 关系抽取请求异常,modelName:通用关系及属性抽取模型,requestBody:{"contents":[{"code":"1bf670f4aa39455c916ae2ed20d8b08a","text":"那孩子是张兴旺和刘巧云生的"}]}
2025-08-19 11:18:31.445 [Thread-5] INFO  c.a.i.k.g.r.e.ExtractRpcImpl - 关系抽取请求,taskCode:5aa931fc89e7404e85e675e8dde68d53 code:1455627b16fe4643a0aaa067a7af947e modelName:通用关系及属性抽取模型 请求地址:http://10.208.61.198:38128/api/v2/re/get_relation/batch requestBody:{"contents":[{"code":"1bf670f4aa39455c916ae2ed20d8b08a","text":"那孩子是张兴旺和刘巧云生的"}]}
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4d88f6c6]
<==    Updates: 1
==> Parameters: 1455627b16fe4643a0aaa067a7af947e(String), 5aa931fc89e7404e85e675e8dde68d53(String), 1(Integer), 32(Integer), 2600032(Integer), null
==>  Preparing: INSERT INTO data_import_status ( task_code, history_code, status, sum_size, done_size, create_time ) VALUES ( ?, ?, ?, ?, ?, ? )
JDBC Connection [com.alibaba.druid.pool.DruidStatementConnection@251360d8] will not be managed by Spring
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4d88f6c6] was not registered for synchronization because synchronization is not active
Creating a new SqlSessionat java.lang.Thread.run(Thread.java:748)at cn.ac.ict.knowledge.graph.service.extract.ExtractTaskServiceImpl.lambda$syncExecuteTask$21(ExtractTaskServiceImpl.java:1062)at cn.ac.ict.knowledge.graph.service.extract.ExtractTaskServiceImpl.executeTask(ExtractTaskServiceImpl.java:996)at cn.ac.ict.knowledge.graph.service.extract.ExtractTaskComponent.relationExtract(ExtractTaskComponent.java:289)at cn.ac.ict.knowledge.graph.service.extract.ExtractTaskComponent.extractRelationAndMysql(ExtractTaskComponent.java:610)at cn.ac.ict.knowledge.graph.rpc.extract.ExtractRpcImpl.extractRelation(ExtractRpcImpl.java:77)at cn.hutool.json.JSONUtil.toBean(JSONUtil.java:461)at cn.hutool.json.JSONUtil.toBean(JSONUtil.java:475)at cn.hutool.json.JSONUtil.parse(JSONUtil.java:227)at cn.hutool.json.JSONUtil.parseObj(JSONUtil.java:112)at cn.hutool.json.JSONObject.<init>(JSONObject.java:187)

在这里插入图片描述


在这里插入图片描述

9. 异常排行榜

 grep "Exception" log.out | sort | uniq -c | sort -nr | head
  • 找出日志中所有包含 “Exception” 的行。
  • 按行内容统计每种异常出现的次数。
  • 按出现次数从高到低排序。
  • 显示出现次数最多的前 10 条异常记录。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/a/348160.html

相关文章:

  • 【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day12
  • lanczos算法的核心——Ritz向量的计算(主要思想为反向映射)
  • 《一次高并发场景下疑难Bug的深度排查与复盘》
  • 基于Langchain框架的DeepSeek-v3+Faiss实现RAG知识问答系统(含完整代码)
  • 【股票数据API接口12】如何获取股票近年分红数据之Python、Java等多种主流语言实例代码演示通过股票数据接口获取数据
  • AI-调查研究-59-机器人 行业职业地图:发展路径、技能要求与薪资全解读
  • Android - 用Scrcpy 将手机投屏到Windows电脑上
  • [创业之路-567]:数字技术、数字产品、数字资产、数字货币、数字企业、数字经济、数字世界、数字人生、数字智能、数字生命
  • 第一个小项目java
  • Linux 软件编程(十)网络编程:网络协议,UDP 与 TCP 知识点
  • 逆光场景识别率↑76%!陌讯多模态融合算法在手机拍照识别的落地实践​
  • 【网络运维】Shell 脚本编程: for 循环与 select 循环
  • ARINC 825板卡的应用
  • vue-pure-admin页面引入和功能添加流程解析
  • Smooze Pro for mac 鼠标手势增强软件
  • 力扣【1277. 统计全为1的正方形子矩阵】——从暴力到最优的思考过程
  • 商超客流密度统计误差率↓35%!陌讯多模态融合算法在零售智慧运营的实战解析
  • 智慧零售商品识别误报率↓74%!陌讯多模态融合算法在自助结算场景的落地优化
  • Ubuntu24.04 安装 Zabbix
  • 使用UE5开发2.5D开放世界战略养成类游戏的硬件配置指南
  • IDM 下载失败排查指南:全面解析与解决方案
  • 马斯克宣布开源Grok 2.5:非商业许可引争议,模型需8×40GB GPU运行,Grok 3半年后开源
  • Redis实战-缓存的解决方案(一)
  • 【贪心算法】day1
  • 【数学建模】灰色关联分析的核心步骤
  • 上位机知识篇---电脑参数
  • Shell脚本-影响shell程序的内置命令
  • [机械结构设计-32]:机械加工中,3D图评审OK,没有问题,后续的主要风险有哪些
  • Bright Data MCP:突破AI数据获取限制的革命性工具
  • M8504报错,开票数量大于收货数量