Linux 服务器查看微服务日志(以 system 服务为例)
Linux 服务器查看微服务日志(以 system 服务为例)
一、找到日志文件位置
# 方法1:全局搜索日志文件find/-name"*system*"-name"*.log"2>/dev/null# 方法2:在常见部署目录查找find/opt /home /data /usr/local-name"*system*"-name"*.log"2>/dev/null# 方法3:查看进程启动参数,找到工作目录ps-ef|grepsystem# 输出示例:java -jar /opt/app/system-service.jar --logging.file.path=/opt/logs/system逐段拆解
| 片段 | 含义 |
|---|---|
find | Linux 文件搜索命令 |
/ | 搜索的起始路径,即根目录(全盘搜索) |
-name "*system*" | 第一个条件:文件名包含 “system”(*是通配符,匹配任意字符) |
-name "*.log" | 第二个条件:文件名以 “.log” 结尾 |
2>/dev/null | 将标准错误输出重定向到"黑洞",屏蔽报错信息 |
关键点详解
1. 两个-name是 AND(与) 关系
-name"*system*"-name"*.log"等价于:
-name"*system*"-a-name"*.log"即文件名必须同时满足两个条件:
- ✅ system-service.log → 匹配
- ✅ system.log → 匹配
- ❌ system-service.txt → 不匹配(不是 .log)
- ❌ app.log → 不匹配(不含 system)
2. 通配符*
*system* → 任意字符 + system + 任意字符 *.log → 任意字符 + .log3. 为什么需要加2>/dev/null?
解析:
| 部分 | 含义 |
|---|---|
2 | 文件描述符 2,即 stderr(标准错误) |
> | 重定向 |
/dev/null | 空设备(“黑洞”),写入的内容全部丢弃 |
全盘搜索时,很多目录没有权限访问,会产生大量报错:
find: '/proc/12345/fd': Permission denied find: '/root/.ssh': Permission denied ...加了2>/dev/null后这些报错全部被屏蔽,终端只显示搜索结果,更清爽。
常见日志路径:
/opt/logs/system/system.log /home/app/logs/system-service.log /data/logs/system/system-info.log补充说明
| 变体 | 说明 |
|---|---|
find /opt -name "*.log" | 只搜 /opt 目录,范围更小更快 |
find / -iname "*system*" | -iname忽略大小写 |
find / -name "*.log" -mtime -1 | 只找最近1天修改过的 .log |
find / -name "*.log" -size +100M | 只找大于100MB的日志 |
二、实时查看日志(最常用)
# 实时滚动查看最新日志tail-f/opt/logs/system/system.log# 查看最后 200 行并持续跟踪tail-200f/opt/logs/system/system.log# 同时监控多个日志文件tail-f/opt/logs/system/system-info.log /opt/logs/system/system-error.log三、搜索/过滤日志
# 搜索关键字(如异常、某个接口)grep"ERROR"system.loggrep"NullPointerException"system.loggrep"/api/user/login"system.log# 忽略大小写 + 显示行号grep-in"error"system.log# 查看关键字前后5行上下文grep-C5"Exception"system.log# 实时过滤(只看ERROR级别)tail-fsystem.log|grep"ERROR"# 按时间范围过滤(查看某段时间的日志)grep"2026-07-30 16:"system.logsed-n'/2026-07-30 16:00/,/2026-07-30 16:30/p'system.log四、分页查看大日志文件
# 分页查看(支持搜索:按 / 输入关键字,n 下一个)lesssystem.log# 直接跳到文件末尾(看最新日志)less+G system.log# 查看文件头部/尾部head-100system.logtail-100system.log五、Docker 部署的情况
# 查看容器列表,找到 system 服务dockerps|grepsystem# 查看日志(实时)dockerlogs-fsystem-service# 查看最近 500 行dockerlogs--tail500system-service# 按时间过滤dockerlogs--since"2026-07-30T16:00:00"system-service# 进入容器内部查看日志文件dockerexec-itsystem-servicebashcd/app/logs&&tail-fsystem.log六、Systemd 管理的服务
# 查看服务日志journalctl-usystem-service# 实时跟踪journalctl-usystem-service-f# 查看最近1小时journalctl-usystem-service--since"1 hour ago"# 只看错误journalctl-usystem-service-perr七、实用组合技巧
# 统计今天ERROR数量grep-c"ERROR"system.log# 查看最近的异常堆栈(最近一次Exception及后续30行)grep-n"Exception"system.log|tail-1# 假设得到行号 12345sed-n'12345,12375p'system.log# 监控日志中是否出现新错误(脚本化)tail-fsystem.log|grep--line-buffered"ERROR"|whilereadline;doecho"[$(date)]$line"done# 日志文件太大时,查看磁盘占用du-sh/opt/logs/system/ls-lhS/opt/logs/system/# 按大小排序八、Spring Boot 微服务常见日志配置参考
# application.yml 中的日志配置logging:file:path:/opt/logs/systemname:/opt/logs/system/system.loglevel:root:INFOcom.xxx.system:DEBUGlogback:rollingpolicy:max-file-size:100MBmax-history:30💡小提示:如果不确定日志在哪,最快的方式是
ps -ef | grep system看启动命令,或者find / -name "*.log" -mmin -60 2>/dev/null找最近1小时内有写入的日志文件。
