docs: 拆分 README.md 为多个子文档,README 简化为架构引导大纲
This commit is contained in:
310
codes/agent/game-docker/docs/06-logging.md
Normal file
310
codes/agent/game-docker/docs/06-logging.md
Normal file
@@ -0,0 +1,310 @@
|
||||
# 日志管理
|
||||
|
||||
---
|
||||
|
||||
## 日志位置总览
|
||||
|
||||
| 日志类型 | 来源容器 | 查看方式 | 说明 |
|
||||
|---------|---------|---------|------|
|
||||
| Nginx 访问/错误日志 | `youle-nginx` | `docker logs` | HTTP 请求记录、SSL 错误 |
|
||||
| API Apache 错误日志 | `youle-api` | `docker logs` | PHP Fatal Error、Apache 500 |
|
||||
| API PHP 错误日志 | `youle-api` | `docker logs` | PHP Warning/Notice(写入 Apache 错误流)|
|
||||
| API 业务日志 | `youle-api` | Volume 文件 | `/var/www/html/logs/YYYY-MM-DD.log` |
|
||||
| API source 模块日志 | `youle-api` | Volume 文件 | `/var/www/html/source/logs/` |
|
||||
| DLWEB Apache 错误日志 | `youle-dlweb` | `docker logs` | PHP Fatal Error、Apache 500 |
|
||||
| DLWEB 业务日志 | `youle-dlweb` | Volume 文件 | `/var/www/html/api/logs/` |
|
||||
| 同步任务调试日志 | `youle-dlweb` | Volume 文件 | `/var/www/html/api/ext/debug/synchronize/YYYY-MM-DD.log` |
|
||||
| 报表同步调试日志 | `youle-dlweb` | Volume 文件 | `/var/www/html/api/ext/debug/SynchronizeReportData/YYYY-MM-DD.log` |
|
||||
| 自动任务调试日志 | `youle-dlweb` | Volume 文件 | `/var/www/html/api/ext/debug/autotask/YYYY-MM-DD.log` |
|
||||
| syncjob 运行日志 | `youle-syncjob` | `docker logs` | curl 请求结果,每 30s 一条 |
|
||||
| cronjob 调度日志 | `youle-cronjob` | `docker logs` | cron 触发记录 |
|
||||
| wxserver 运行日志 | `youle-wxserver` | `docker logs` | Node.js 标准输出 |
|
||||
|
||||
---
|
||||
|
||||
## 一、查看容器标准输出日志(docker logs)
|
||||
|
||||
```bash
|
||||
# 查看最近 50 行(快速概览)
|
||||
docker logs --tail 50 youle-nginx
|
||||
docker logs --tail 50 youle-api
|
||||
docker logs --tail 50 youle-dlweb
|
||||
docker logs --tail 50 youle-syncjob
|
||||
docker logs --tail 50 youle-cronjob
|
||||
docker logs --tail 50 youle-wxserver
|
||||
|
||||
# 实时跟踪日志(Ctrl+C 退出)
|
||||
docker logs -f youle-api
|
||||
docker logs -f youle-syncjob
|
||||
|
||||
# 查看最近 100 行并实时跟踪
|
||||
docker logs --tail 100 -f youle-dlweb
|
||||
|
||||
# 查看带时间戳的日志
|
||||
docker logs -t --tail 50 youle-nginx
|
||||
|
||||
# 查看某时间段之后的日志
|
||||
docker logs --since 2026-04-13T10:00:00 youle-api
|
||||
docker logs --since 1h youle-syncjob # 最近 1 小时
|
||||
```
|
||||
|
||||
### 使用 deploy.sh 快捷查看
|
||||
|
||||
```bash
|
||||
./deploy.sh logs api
|
||||
./deploy.sh logs dlweb
|
||||
./deploy.sh logs syncjob
|
||||
./deploy.sh logs cronjob
|
||||
./deploy.sh logs nginx
|
||||
./deploy.sh logs wxserver
|
||||
|
||||
# 加 -f 实时跟踪
|
||||
./deploy.sh logs -f api
|
||||
./deploy.sh logs -f syncjob
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 二、查看业务调试日志文件(Volume 文件)
|
||||
|
||||
业务调试日志写入 Docker Volume,按日期分文件(`YYYY-MM-DD.log`)。
|
||||
|
||||
```bash
|
||||
# --- API 业务日志 ---
|
||||
|
||||
docker exec youle-api ls -lh /var/www/html/logs/
|
||||
docker exec youle-api tail -50 /var/www/html/logs/$(date +%Y-%m-%d).log
|
||||
docker exec youle-api tail -f /var/www/html/logs/$(date +%Y-%m-%d).log
|
||||
docker exec youle-api cat /var/www/html/logs/$(date +%Y-%m-%d).log
|
||||
|
||||
# --- API source 模块日志 ---
|
||||
docker exec youle-api ls -lhR /var/www/html/source/logs/
|
||||
docker exec youle-api tail -50 /var/www/html/source/logs/$(date +%Y-%m-%d).log
|
||||
|
||||
# --- DLWEB 业务日志 ---
|
||||
docker exec youle-dlweb ls -lh /var/www/html/api/logs/
|
||||
docker exec youle-dlweb tail -50 /var/www/html/api/logs/$(date +%Y-%m-%d).log
|
||||
|
||||
# --- 同步任务调试日志(Synchronize.php)---
|
||||
docker exec youle-dlweb ls -lh /var/www/html/api/ext/debug/synchronize/
|
||||
docker exec youle-dlweb tail -50 /var/www/html/api/ext/debug/synchronize/$(date +%Y-%m-%d).log
|
||||
docker exec youle-dlweb tail -f /var/www/html/api/ext/debug/synchronize/$(date +%Y-%m-%d).log
|
||||
|
||||
# --- 报表同步调试日志(SynchronizeReportData.php)---
|
||||
docker exec youle-dlweb ls -lh /var/www/html/api/ext/debug/SynchronizeReportData/
|
||||
docker exec youle-dlweb tail -50 /var/www/html/api/ext/debug/SynchronizeReportData/$(date +%Y-%m-%d).log
|
||||
|
||||
# --- 自动任务调试日志(autotask)---
|
||||
docker exec youle-dlweb ls -lh /var/www/html/api/ext/debug/autotask/
|
||||
docker exec youle-dlweb tail -50 /var/www/html/api/ext/debug/autotask/$(date +%Y-%m-%d).log
|
||||
```
|
||||
|
||||
### 一键健康检查(汇总命令)
|
||||
|
||||
```bash
|
||||
echo '=== syncjob 容器日志(最近20行)==='
|
||||
docker logs --tail 20 youle-syncjob
|
||||
echo
|
||||
echo '=== 同步调试日志(最近20行)==='
|
||||
docker exec youle-dlweb tail -20 /var/www/html/api/ext/debug/synchronize/$(date +%Y-%m-%d).log
|
||||
echo
|
||||
echo '=== API 业务日志(最近20行)==='
|
||||
docker exec youle-api tail -20 /var/www/html/logs/$(date +%Y-%m-%d).log
|
||||
```
|
||||
|
||||
### Nginx 访问日志过滤
|
||||
|
||||
```bash
|
||||
# 过滤 HTTP 500 错误
|
||||
docker logs youle-nginx 2>&1 | grep ' 500 '
|
||||
|
||||
# 过滤特定 IP 的请求
|
||||
docker logs youle-nginx 2>&1 | grep '客户端IP地址'
|
||||
|
||||
# 过滤 SSL/TLS 握手错误
|
||||
docker logs youle-nginx 2>&1 | grep 'SSL_do_handshake\|no required SSL'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 三、清除日志
|
||||
|
||||
### 1. 清除 Docker 容器日志(stdout/stderr)
|
||||
|
||||
```bash
|
||||
# 清空单个容器的 docker logs(容器保持运行,不中断服务)
|
||||
truncate -s 0 $(docker inspect --format='{{.LogPath}}' youle-syncjob)
|
||||
truncate -s 0 $(docker inspect --format='{{.LogPath}}' youle-api)
|
||||
truncate -s 0 $(docker inspect --format='{{.LogPath}}' youle-dlweb)
|
||||
truncate -s 0 $(docker inspect --format='{{.LogPath}}' youle-nginx)
|
||||
|
||||
# 一键清空所有 youle-* 容器的 docker logs
|
||||
for name in youle-nginx youle-api youle-dlweb youle-wxserver youle-syncjob youle-cronjob youle-redis youle-certbot; do
|
||||
logpath=$(docker inspect --format='{{.LogPath}}' $name 2>/dev/null)
|
||||
[ -n "$logpath" ] && truncate -s 0 "$logpath" && echo "Cleared: $name"
|
||||
done
|
||||
```
|
||||
|
||||
### 2. 清除业务调试日志文件(Volume 内)
|
||||
|
||||
```bash
|
||||
# --- 清除 API 业务日志 ---
|
||||
docker exec youle-api sh -c "find /var/www/html/logs/ -name '*.log' ! -name '$(date +%Y-%m-%d).log' -delete"
|
||||
docker exec youle-api truncate -s 0 /var/www/html/logs/$(date +%Y-%m-%d).log
|
||||
docker exec youle-api sh -c 'rm -f /var/www/html/logs/*.log'
|
||||
|
||||
# --- 清除 DLWEB 业务日志 ---
|
||||
docker exec youle-dlweb sh -c "find /var/www/html/api/logs/ -name '*.log' ! -name '$(date +%Y-%m-%d).log' -delete"
|
||||
docker exec youle-dlweb sh -c 'rm -f /var/www/html/api/logs/*.log'
|
||||
|
||||
# --- 清除同步任务调试日志 ---
|
||||
docker exec youle-dlweb find /var/www/html/api/ext/debug/ -name '*.log' -mtime +30 -delete # 删 30 天前
|
||||
docker exec youle-dlweb sh -c "find /var/www/html/api/ext/debug/ -name '*.log' ! -name '$(date +%Y-%m-%d).log' -delete"
|
||||
docker exec youle-dlweb sh -c '
|
||||
rm -f /var/www/html/api/ext/debug/synchronize/*.log
|
||||
rm -f /var/www/html/api/ext/debug/SynchronizeReportData/*.log
|
||||
rm -f /var/www/html/api/ext/debug/autotask/*.log
|
||||
'
|
||||
```
|
||||
|
||||
### 3. 一键清理脚本(所有日志)
|
||||
|
||||
将以下内容保存为服务器上的 `/opt/youle/game-docker/clear-logs.sh`:
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
echo '=== 清空 Docker 容器日志 ==='
|
||||
for name in youle-nginx youle-api youle-dlweb youle-wxserver youle-syncjob youle-cronjob youle-redis youle-certbot; do
|
||||
logpath=$(docker inspect --format='{{.LogPath}}' $name 2>/dev/null)
|
||||
if [ -n "$logpath" ] && [ -f "$logpath" ]; then
|
||||
truncate -s 0 "$logpath"
|
||||
echo " Cleared docker log: $name"
|
||||
fi
|
||||
done
|
||||
|
||||
echo '=== 清空业务日志文件 ==='
|
||||
docker exec youle-api sh -c 'rm -f /var/www/html/logs/*.log /var/www/html/source/logs/*.log 2>/dev/null; echo " Cleared api logs"'
|
||||
docker exec youle-dlweb sh -c '
|
||||
rm -f /var/www/html/api/logs/*.log 2>/dev/null
|
||||
rm -f /var/www/html/api/ext/debug/synchronize/*.log 2>/dev/null
|
||||
rm -f /var/www/html/api/ext/debug/SynchronizeReportData/*.log 2>/dev/null
|
||||
rm -f /var/www/html/api/ext/debug/autotask/*.log 2>/dev/null
|
||||
echo " Cleared dlweb logs"
|
||||
'
|
||||
echo '=== 完成 ==='
|
||||
```
|
||||
|
||||
```bash
|
||||
chmod +x /opt/youle/game-docker/clear-logs.sh
|
||||
/opt/youle/game-docker/clear-logs.sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 四、Windows PowerShell 远程操作
|
||||
|
||||
> 以下命令在 **Windows PowerShell** 中执行,通过 SSH 直接读取服务器上的业务日志。
|
||||
|
||||
### 查看日志
|
||||
|
||||
```powershell
|
||||
$today = (Get-Date -Format "yyyy-MM-dd")
|
||||
|
||||
# api/logs
|
||||
ssh root@47.98.203.17 "docker exec youle-api ls -lh /var/www/html/logs/"
|
||||
ssh root@47.98.203.17 "docker exec youle-api tail -50 /var/www/html/logs/$today.log"
|
||||
ssh root@47.98.203.17 "docker exec youle-api cat /var/www/html/logs/$today.log"
|
||||
ssh root@47.98.203.17 "docker exec youle-api tail -f /var/www/html/logs/$today.log" # 实时
|
||||
|
||||
# synchronize
|
||||
ssh root@47.98.203.17 "docker exec youle-dlweb ls -lh /var/www/html/api/ext/debug/synchronize/"
|
||||
ssh root@47.98.203.17 "docker exec youle-dlweb tail -50 /var/www/html/api/ext/debug/synchronize/$today.log"
|
||||
ssh root@47.98.203.17 "docker exec youle-dlweb tail -f /var/www/html/api/ext/debug/synchronize/$today.log" # 实时
|
||||
|
||||
# SynchronizeReportData
|
||||
ssh root@47.98.203.17 "docker exec youle-dlweb ls -lh /var/www/html/api/ext/debug/SynchronizeReportData/"
|
||||
ssh root@47.98.203.17 "docker exec youle-dlweb tail -50 /var/www/html/api/ext/debug/SynchronizeReportData/$today.log"
|
||||
|
||||
# autotask
|
||||
ssh root@47.98.203.17 "docker exec youle-dlweb ls -lh /var/www/html/api/ext/debug/autotask/"
|
||||
ssh root@47.98.203.17 "docker exec youle-dlweb tail -50 /var/www/html/api/ext/debug/autotask/$today.log"
|
||||
|
||||
# 一键汇总(同时查看三个目录今天的日志末尾)
|
||||
$today = (Get-Date -Format "yyyy-MM-dd")
|
||||
ssh root@47.98.203.17 @"
|
||||
echo '=== api/logs/$today.log ==='
|
||||
docker exec youle-api tail -30 /var/www/html/logs/$today.log
|
||||
echo
|
||||
echo '=== synchronize/$today.log ==='
|
||||
docker exec youle-dlweb tail -30 /var/www/html/api/ext/debug/synchronize/$today.log
|
||||
echo
|
||||
echo '=== SynchronizeReportData/$today.log ==='
|
||||
docker exec youle-dlweb tail -30 /var/www/html/api/ext/debug/SynchronizeReportData/$today.log
|
||||
"@
|
||||
```
|
||||
|
||||
### 删除日志
|
||||
|
||||
```powershell
|
||||
$today = (Get-Date -Format "yyyy-MM-dd")
|
||||
|
||||
# 清空今天的 API 业务日志(保留文件)
|
||||
ssh root@47.98.203.17 "docker exec youle-api truncate -s 0 /var/www/html/logs/$today.log"
|
||||
|
||||
# 删除全部 API 业务日志
|
||||
ssh root@47.98.203.17 "docker exec youle-api sh -c 'rm -f /var/www/html/logs/*.log'"
|
||||
|
||||
# 清空今天的同步调试日志
|
||||
ssh root@47.98.203.17 "docker exec youle-dlweb truncate -s 0 /var/www/html/api/ext/debug/synchronize/$today.log"
|
||||
|
||||
# 删除 30 天前的旧调试日志
|
||||
ssh root@47.98.203.17 "docker exec youle-dlweb find /var/www/html/api/ext/debug/ -name '*.log' -mtime +30 -delete"
|
||||
|
||||
# 一键清理:api/logs + dlweb/api/ext/debug 全部日志
|
||||
ssh root@47.98.203.17 @"
|
||||
docker exec youle-api sh -c 'rm -f /var/www/html/logs/*.log'
|
||||
docker exec youle-dlweb sh -c '
|
||||
rm -f /var/www/html/api/ext/debug/synchronize/*.log
|
||||
rm -f /var/www/html/api/ext/debug/SynchronizeReportData/*.log
|
||||
rm -f /var/www/html/api/ext/debug/autotask/*.log
|
||||
'
|
||||
echo "Done"
|
||||
"@
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 快捷速查表
|
||||
|
||||
> 以下命令在 SSH 登录服务器后直接执行。
|
||||
|
||||
### 查看日志
|
||||
|
||||
| 目标 | 命令 |
|
||||
|------|------|
|
||||
| nginx 访问日志(末尾50行) | `docker logs --tail 50 youle-nginx` |
|
||||
| nginx 访问日志(实时跟踪) | `docker logs -f youle-nginx` |
|
||||
| wxserver 日志(末尾50行) | `docker logs --tail 50 youle-wxserver` |
|
||||
| API PHP 错误日志(末尾50行) | `docker exec youle-api tail -50 /var/log/apache2/php_errors.log` |
|
||||
| API 业务日志_今天(末尾50行) | `docker exec youle-api tail -50 /var/www/html/logs/$(date +%Y-%m-%d).log` |
|
||||
| API 业务日志_今天(实时跟踪) | `docker exec youle-api tail -f /var/www/html/logs/$(date +%Y-%m-%d).log` |
|
||||
| 列出 API 业务日志文件 | `docker exec youle-api ls -lh /var/www/html/logs/` |
|
||||
| 同步调试日志_今天(末尾50行) | `docker exec youle-dlweb tail -50 /var/www/html/api/ext/debug/synchronize/$(date +%Y-%m-%d).log` |
|
||||
| 同步调试日志_今天(实时跟踪) | `docker exec youle-dlweb tail -f /var/www/html/api/ext/debug/synchronize/$(date +%Y-%m-%d).log` |
|
||||
| syncjob 任务日志(末尾50行) | `docker logs --tail 50 youle-syncjob` |
|
||||
| cronjob 任务日志(末尾50行) | `docker logs --tail 50 youle-cronjob` |
|
||||
|
||||
### 清理日志
|
||||
|
||||
| 目标 | 命令 |
|
||||
|------|------|
|
||||
| 清空 nginx docker logs | `truncate -s 0 $(docker inspect --format='{{.LogPath}}' youle-nginx)` |
|
||||
| 清空 API docker logs | `truncate -s 0 $(docker inspect --format='{{.LogPath}}' youle-api)` |
|
||||
| 清空 dlweb docker logs | `truncate -s 0 $(docker inspect --format='{{.LogPath}}' youle-dlweb)` |
|
||||
| 清空所有容器 docker logs | `for n in youle-nginx youle-api youle-dlweb youle-wxserver youle-syncjob youle-cronjob youle-redis youle-certbot; do truncate -s 0 $(docker inspect --format='{{.LogPath}}' $n 2>/dev/null) 2>/dev/null; done` |
|
||||
| 清空今天 API 业务日志 | `docker exec youle-api truncate -s 0 /var/www/html/logs/$(date +%Y-%m-%d).log` |
|
||||
| 清空今天同步调试日志 | `docker exec youle-dlweb truncate -s 0 /var/www/html/api/ext/debug/synchronize/$(date +%Y-%m-%d).log` |
|
||||
| 删除 API 全部历史日志 | `docker exec youle-api sh -c 'rm -f /var/www/html/logs/*.log'` |
|
||||
| 删除调试日志 30 天前旧文件 | `docker exec youle-dlweb find /var/www/html/api/ext/debug/ -name '*.log' -mtime +30 -delete` |
|
||||
| 删除调试日志全部文件 | `docker exec youle-dlweb sh -c 'rm -f /var/www/html/api/ext/debug/synchronize/*.log /var/www/html/api/ext/debug/SynchronizeReportData/*.log /var/www/html/api/ext/debug/autotask/*.log'` |
|
||||
| 一键清理全部日志 | `/opt/youle/game-docker/clear-logs.sh` |
|
||||
Reference in New Issue
Block a user