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 | grep system
# 输出示例: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 → 任意字符 + .log
3. 为什么需要加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.log
grep "NullPointerException" system.log
grep "/api/user/login" system.log
# 忽略大小写 + 显示行号
grep -in "error" system.log
# 查看关键字前后5行上下文
grep -C 5 "Exception" system.log
# 实时过滤(只看ERROR级别)
tail -f system.log | grep "ERROR"
# 按时间范围过滤(查看某段时间的日志)
grep "2026-07-30 16:" system.log
sed -n '/2026-07-30 16:00/,/2026-07-30 16:30/p' system.log
四、分页查看大日志文件
# 分页查看(支持搜索:按 / 输入关键字,n 下一个)
less system.log
# 直接跳到文件末尾(看最新日志)
less +G system.log
# 查看文件头部/尾部
head -100 system.log
tail -100 system.log
五、Docker 部署的情况
# 查看容器列表,找到 system 服务
docker ps | grep system
# 查看日志(实时)
docker logs -f system-service
# 查看最近 500 行
docker logs --tail 500 system-service
# 按时间过滤
docker logs --since "2026-07-30T16:00:00" system-service
# 进入容器内部查看日志文件
docker exec -it system-service bash
cd /app/logs && tail -f system.log
六、Systemd 管理的服务
# 查看服务日志
journalctl -u system-service
# 实时跟踪
journalctl -u system-service -f
# 查看最近1小时
journalctl -u system-service --since "1 hour ago"
# 只看错误
journalctl -u system-service -p err
七、实用组合技巧
# 统计今天ERROR数量
grep -c "ERROR" system.log
# 查看最近的异常堆栈(最近一次Exception及后续30行)
grep -n "Exception" system.log | tail -1
# 假设得到行号 12345
sed -n '12345,12375p' system.log
# 监控日志中是否出现新错误(脚本化)
tail -f system.log | grep --line-buffered "ERROR" | while read line; do
echo "[$(date)] $line"
done
# 日志文件太大时,查看磁盘占用
du -sh /opt/logs/system/
ls -lhS /opt/logs/system/ # 按大小排序
八、Spring Boot 微服务常见日志配置参考
# application.yml 中的日志配置
logging:
file:
path: /opt/logs/system
name: /opt/logs/system/system.log
level:
root: INFO
com.xxx.system: DEBUG
logback:
rollingpolicy:
max-file-size: 100MB
max-history: 30
💡 小提示:如果不确定日志在哪,最快的方式是
ps -ef | grep system看启动命令,或者find / -name "*.log" -mmin -60 2>/dev/null找最近1小时内有写入的日志文件。
更多推荐


所有评论(0)