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 | |
/ | |
-name "*system*" | 第一个条件:文件名包含 “system”(* 是通配符,匹配任意字符) |
-name "*.log" | |
2>/dev/null | |
关键点详解
1. 两个 -name 是 AND(与) 关系
-name "*system*" -name "*.log"
等价于:
-name "*system*" -a -name "*.log"
即文件名必须同时满足两个条件:
- ✅ system-service.log → 匹配
- ❌ system-service.txt → 不匹配(不是 .log)
- ❌ app.log → 不匹配(不含 system)
2. 通配符 *
*system* → 任意字符 + system + 任意字符*.log → 任意字符 + .log
3. 为什么需要加2>/dev/null?
解析:
全盘搜索时,很多目录没有权限访问,会产生大量报错:
find: '/proc/12345/fd': Permission deniedfind: '/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" | |
find / -iname "*system*" | -iname |
find / -name "*.log" -mtime -1 | |
find / -name "*.log" -size +100M | |
二、实时查看日志(最常用)
# 实时滚动查看最新日志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 -C 5 "Exception" system.log# 实时过滤(只看ERROR级别)tail -f system.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 下一个)less system.log# 直接跳到文件末尾(看最新日志)less +G system.log# 查看文件头部/尾部head -100 system.logtail -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 bashcd /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# 假设得到行号 12345sed -n '12345,12375p' system.log# 监控日志中是否出现新错误(脚本化)tail -f system.log | grep --line-buffered "ERROR" | while read line; do echo "[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小时内有写入的日志文件。