日志查看与排查
容器日志是排查问题的关键,下面介绍高效的日志查看方法。
基本查看
Bash
# 查看完整日志
docker logs my-app
# 实时跟踪
docker logs -f my-app
# 查看最近 N 行
docker logs --tail 100 my-app
# 实时跟踪最近 10 行
docker logs -f --tail 10 my-app
时间过滤
Bash
# 查看指定时间后
docker logs --since 2024-01-01T10:00:00 my-app
# 查看最近 N 分钟/小时
docker logs --since 30m my-app
docker logs --since 2h my-app
# 查看指定时间范围
docker logs --since 2024-01-01T10:00:00 --until 2024-01-01T12:00:00 my-app
过滤关键字
Bash
# 结合 grep 过滤
docker logs my-app 2>&1 | grep "error"
# 实时跟踪并过滤
docker logs -f my-app 2>&1 | grep --line-buffered "error"
# 多关键字
docker logs my-app 2>&1 | grep -E "error|warning|critical"
# 统计错误数量
docker logs my-app 2>&1 | grep -c "error"
时间戳
Bash
# 显示时间戳
docker logs -t my-app
# 输出
2024-01-01T10:00:00.123456789Z [INFO] Starting app
2024-01-01T10:00:01.123456789Z [ERROR] Connection failed
排查流程
1. 查看容器状态
Bash
# 检查容器是否运行
docker ps | grep my-app
# 检查退出码
docker inspect my-app --format='{{.State.ExitCode}}'
2. 查看最近日志
Bash
# 查看最近 50 行
docker logs --tail 50 my-app
# 查看最近 1 小时
docker logs --since 1h my-app
3. 定位错误
Bash
# 查找错误
docker logs my-app 2>&1 | grep -A 5 -B 5 "error"
# 查找堆栈跟踪
docker logs my-app 2>&1 | grep -A 10 "Exception\|Traceback\|panic"
4. 检查资源
Bash
# 查看资源使用
docker stats my-app
# 查看文件系统变更
docker diff my-app
日志导出
Bash
# 导出日志到文件
docker logs my-app > my-app.log 2>&1
# 带时间戳导出
docker logs -t my-app > my-app-timestamped.log 2>&1
# 压缩存储
docker logs my-app | gzip > my-app.log.gz
多容器日志
Bash
# Compose 查看所有服务日志
docker compose logs
docker compose logs -f
docker compose logs app # 仅查看 app 服务
# 查看最近 N 行
docker compose logs --tail=100
日志分析技巧
Bash
# 统计错误频率
docker logs my-app 2>&1 | grep "error" | awk '{print $1}' | sort | uniq -c
# 查看特定级别日志
docker logs my-app 2>&1 | grep "\[ERROR\]"
# 查看特定模块日志
docker logs my-app 2>&1 | grep "database\|db\|mysql"
要点总结
docker logs查看日志,-f实时跟踪,--tail限制行数--since和--until按时间范围过滤-t显示时间戳,便于问题定位- 结合 grep 过滤关键字,快速定位错误
docker compose logs查看多容器日志
📝 发现内容有误?点击此处直接编辑