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

SpringBoot怎么查看服务端的日志

一、查异常堆栈:别只看一行!

Java异常堆栈都是“连续剧”,光看第一行根本找不到病根。比如你之前看到的:

tail -f a.log | grep "java.lang.NullPointerException"

只能拿到最上面那一行,下面几十行的堆栈信息全被吃掉了。这时候得用grep -A(A是After的缩写):

grep -A 50 "java.lang.NullPointerException" a.log

-A 50会把匹配行后面50行全拽出来,这样就能看到完整的异常堆栈了!比如输出会像这样:

2025-07-03 11:38:48.339 [http-nio-8960-exec-1] [47gK4n32jEYvTYX8AYti48] [INFO] [GlobalExceptionHandler] java.lang.NullPointerException, ex: java.lang.NullPointerException  
java.lang.NullPointerException: null  
at com.example.service.UserService.getUser(UserService.java:42)  
at com.example.controller.UserController.getUser(UserController.java:28)  
...(后面还有几十行堆栈)

要是日志刷屏太快,还可以用less分页查看:

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

less里按G直接跳到末尾看最新日志,按/Exception继续搜索,按q退出——比你用vi翻半天快10倍!

二、实时监控:让异常自己蹦出来

要是你怀疑应用会随时报错,想实时蹲守,可以把tail -fgrep结合起来:

tail -f a.log | grep -A 50 "java.lang.NullPointerException"

这样只要异常一出现,它就会={red}**自动把堆栈信息打印出来**=,连按回车都省了!比如你刚敲完命令,下一秒日志就会刷出来:

==> a.log <==  
2025-07-03 11:45:23.123 [http-nio-8960-exec-5] [89hJ7k65lEYvTYX8AYti48] [ERROR] [GlobalExceptionHandler] java.lang.NullPointerException, ex: java.lang.NullPointerException  
java.lang.NullPointerException: null  
at com.example.service.OrderService.createOrder(OrderService.java:67)  
...

想停?按Ctrl + C就行。要是怕拼错大小写(比如写成nullpointerexception),可以加-i忽略大小写:

tail -f a.log | grep -i -A 50 "nullpointerexception"
三、翻历史日志:连压缩包都不用解!

服务器日志通常会按天压缩成.gz文件,比如a.log.2025-07-02.gz。这时候直接用grep -H搜所有.log文件:

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

-H会显示文件名,比如输出会是:

a.log:2025-07-03 11:38:48.339 ...  
b.log:2025-07-02 09:15:42.789 ...

要是遇到.gz压缩文件,用zgrep直接穿透搜索:

zgrep -H -A 50 "java.lang.NullPointerException" *.gz

zgrep就像给grep装了透视眼,不用解压就能直接查压缩包里的内容!比如你搜完会看到:

a.log.2025-07-02.gz:2025-07-02 14:23:56.890 ...
四、统计异常次数:看看是不是成灾了

想知道这个异常到底是偶发还是天天蹦跶?用grep -c统计次数:

grep -c "java.lang.NullPointerException" a.log

输出就是出现的行数,比如:

12

要是想统计所有日志文件的总数:

grep -c "java.lang.NullPointerException" *.log

结果会像这样:

a.log:12  
b.log:3  
total:15

这样就能快速判断是不是代码有重大隐患了!

五、进阶操作:前后文一起看

有时候光看异常还不够,得结合前后日志分析。这时候可以用-B(前面的行)、-C(上下文)参数:

grep -C 25 "java.lang.NullPointerException" a.log

-C 25会把匹配行={red}**前后各25行**=都显示出来,比如输出会包含异常前后的业务日志,帮你定位是不是前面某个步骤没处理好。

再比如,想找异常发生前10行的用户操作记录:

grep -B 10 "java.lang.NullPointerException" a.log

这样就能看到用户干了什么导致报错,比你一行行翻日志快多了!

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

相关文章:

  • sqli-labs通关笔记-第28a关GET字符注入(关键字过滤绕过 手注法)
  • USB Device(VID_1f3a_PID_efe8) 驱动叹号
  • ART数据库索引结构--ART,The adaptive radix tree论文细读
  • 基于落霞归雁思维框架的软件需求管理实践指南
  • 字节Seed发布扩散语言模型,推理速度达2146 tokens/s,比同规模自回归快5.4倍
  • 【C++/STL】vector的OJ,深度剖析和模拟实现
  • Java多线程入门-基础概念与线程操作
  • JVM 01 运行区域
  • 动态规划经典模型:双数组问题的通用解决框架与实战
  • C++ STL 组件及其关系:从模块化设计到图形化展示
  • SpringBoot AOP
  • CYUSB3014-BZXC-USB3.0接口芯片-富利威
  • python---literal_eval函数
  • Python管道编程解析:构建高效数据流处理框架
  • Redis从入门到实战
  • Effective C++ 条款18:让接口容易被正确使用,不易被误用
  • IOT物联网平台发布,可私有化部署
  • 算法刷题【面试经典150题】
  • 技巧|SwanLab记录PR曲线攻略
  • 【Unity3D实例-功能-移动】小兵移动-通过鼠标点击进行
  • 【微实验】弦振动 MATLAB 物理模型 动画仿真
  • 腕管综合征 : “鼠标手”| “数字时代工伤”,在我国视频终端工作者中患病率达12%到15%。“
  • web:js的模块导出/导入
  • 【编号413】“一带一路”25个港口城市及其周边区域海岸线分类数据
  • 译|Netflix 数据平台运营中基于机器学习自动修复系统
  • 【网络与爬虫 38】Apify全栈指南:从0到1构建企业级自动化爬虫平台
  • 【Android】使用 Intent 传递对象的两种序列化方式
  • RPG增容2.尝试使用MMC根据游戏难度自定义更改怪物属性(三)
  • 推荐系统学习笔记(六)自监督学习
  • 【语音技术】意图与语料