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

线上日志排查问题

1、查异常堆栈

显示该行及其后面的50行内容,然后通过 less 命令进行分页查看

grep -A 50 "NullPointerException" a.log | less

参数解释:

  • grep: 文本搜索命令
  • -A 50: After 的意思,显示匹配行后面的50行
  • “NullPointerException”: 要搜索的文本模式(Java空指针异常)
  • a.log: 目标日志文件
  • |: 管道符,将前一个命令的输出传递给后一个命令
  • less: 分页查看器,用于逐页浏览长文本

A的参数还可以替换为以下参数:

  • -B 50:Before的意思,显示匹配行前面的50行
  • -C 50:Context的意思,显示匹配行前后的50行(对称显示)

2、实时监控新日志

实时监控日志文件,当出现 “NullPointerException” 时,显示该异常及其后面的50行内容。

tail -f a.log | grep --line-buffered "NullPointerException"

参数解释:

  • tail -f: 实时跟踪文件的新增内容
  • a.log: 目标日志文件
  • –line-buffered:仅显示匹配的行

3、翻历史/压缩日志

快速定位多个日志文件中的空指针异常,并查看完整的错误堆栈信

grep -H -A 50 "NullPointerException" *.log

参数解释:

  • -H: 显示文件名(即使只搜索一个文件)
  • *.log: 匹配所有以 .log 结尾的文件
zgrep -H -A 50 "NullPointerException" *.gz

参数解释:

  • zgrep: 专门用于搜索压缩文件的grep命令
  • *.gz: 匹配所有以 .gz 结尾的压缩文件

4、统计异常数量

统计每个 .log 文件中包含 “NullPointerEWxception” 的行数

grep -c "NullPointerEWxception" *.log

-c: count 的意思,统计匹配行的数量

5、多种异常一起查

使用正则表达式在日志文件中同时搜索两种异常。

grep -E "NullPointerException|TimeoutException|IOException|SQLException" a.log

参数解释:

  • -E: 使用扩展正则表达式(Extended Regular Expressions),启用扩展正则表达式,使得 | 被解释为或操作符,而不是普通字符
  • “NullPointerException|TimeoutException|IOException|SQLException”: 匹配包含 “NullPointerException” 或者 “TimeoutException” 或者”IOException“或者”SQLException“的行

6、反向过滤(排除无关)

查找空指针异常并过滤掉调试信息

grep "NullPointerException" a.log -A 20 | grep -v "debug"

参数解释:

  • grep -v:反向匹配,显示不包含指定模式的行

7、按时间范围筛选日志

查询出2025-08-21 10点到11点之间出现的空指针异常

awk '/2025-08-21 10:/,/2025-08-21 12:/' a.log | grep "NullPointerException"

参数解释:

  • awk: 文本处理工具
  • /2025-08-21 10:/,/2025-08-21 12:/:范围模式(提取这两个时间点之间的所有行)
    • 起始模式:包含 “2025-08-21 10:” 的行
    • 结束模式:包含 “2025-08-21 12:” 的行

8、关键字AND查询

查找同时包含 “Exception” 和 “UserService” 的行

grep "Exception" a.log | grep "UserService"

9、定位最近一次异常

从日志文件的末尾开始搜索,找到最后一个 “NullPointerException” 并显示它及其后面的50行内容

tac a.log | grep -m 1 "NullPointerException" -A 50

参数说明:

  • tac: 反向显示文件内容(cat的反向命令),从文件的最后一行开始,逐行向上显示,相当于把文件内容完全颠倒顺序
  • |:管道,将反向排列的日志内容传递给 grep
  • -m 1: 最多匹配1次,找到第一个匹配就停止

10、异常排行

用于统计日志中各种异常的出现次数并按频率排序

grep "Exception" a.log | sort | uniq -c | sort -nr | head

参数说明:

  • grep “Exception” a.log:从 a.log 中筛选出包含 “Exception” 的所有行
  • sort:对异常行进行排序(按字母顺序)
  • uniq -c:合并相同的异常行并显示计数
  • sort -nr:按出现次数从高到低排序
    • n: 按数字排序
    • r: 反向排序(降序)
  • head:显示前10行(默认)
http://www.dtcms.com/a/343902.html

相关文章:

  • docker 查看容器 docker 筛选容器
  • 使用 Ragas 评估你的 Elasticsearch LLM 应用
  • 基于Python的伊人酒店管理系统 Python+Django+Vue.js
  • 基于Docker的高可用WordPress集群部署:Nginx负载均衡+Mysql主从复制+ProxySQL读写分离
  • Unreal Engine UFloatingPawnMovement
  • SpringBoot集成ELK
  • 【Dubbo】高性能的 RPC
  • 零基础从头教学Linux(Day 18)
  • Slither 审计自己写的智能合约
  • 《R for Data Science (2e)》免费中文翻译 (第5章) --- Data tidying
  • 园区 “一表多属” 电仪表能碳数据归集与编码实施文档
  • 《LINUX系统编程》笔记p3
  • 赛灵思ZYNQ官方文档UG585自学翻译笔记与代码示例:XILINX UART控制器详解:特性与功能
  • 新手向:计算机视觉入门OpenCV实战项目
  • elasticsearch 7.x elasticsearch 使用scroll滚动查询一页,删除一页,影响后面滚动的查询吗
  • 【LeetCode热题100道笔记+动画】最大子数组和
  • 任务同步和锁
  • 基于django/python的服装销售系统平台/服装购物系统/基于django/python的服装商城
  • sqli-labs通关笔记-第61关 GET字符型报错注入(单引号双括号闭合 限制5次探测机会)
  • 基于Django的学校实验室预约管理系统/基于python的实验室管理系统的设计与实现#python#django#FLASK
  • JAVA基础-java虚拟机
  • uniapp googlepay支付 内购项目
  • 豆包AI PPT与秒出PPT对比评测:谁更适合你?
  • 计算机毕设选题推荐 基于Spark的家庭能源消耗智能分析与可视化系统 基于机器学习的家庭能源消耗预测与可视化系统源码
  • Python办公之Excel(openpyxl)、PPT(python-pptx)、Word(python-docx)
  • 2026年计算机毕设推荐:基于大数据的慢性肾病数据可视化分析系统技术选型指南【Hadoop、spark、python】
  • 使用PPT进行科研绘图过程中常用的快捷键
  • 日志logging学习(1)
  • Gemini 2.5 Flash-Lite与 DeepSeek-V3 深度对比:谁在性价比上更胜一筹?
  • 【typenum】 21 类型级别计算最大公约数(Gcd)