diff --git a/README.md b/README.md
index 62d1c36..d9fcb3d 100644
--- a/README.md
+++ b/README.md
@@ -799,6 +799,199 @@ sudo supervisorctl update
sudo supervisorctl restart celery_worker celery_beat
```
+### 5.1 日志文件查看指南
+
+在生产环境中,有多种日志来源,了解每种日志的位置和查看方法非常重要:
+
+#### 5.1.1 Celery Worker 和 Beat 日志
+
+这些日志由 Celery 进程产生,需要先创建日志目录:
+
+```bash
+# 创建日志目录
+sudo mkdir -p /var/log/celery/
+
+# 设置权限
+sudo chown -R www-data:www-data /var/log/celery/
+sudo chmod -R 755 /var/log/celery/
+```
+
+查看日志:
+```bash
+# 实时查看 Worker 日志
+tail -f /var/log/celery/worker.log
+
+# 实时查看 Beat 日志
+tail -f /var/log/celery/beat.log
+
+# 查看最近50行
+tail -n 50 /var/log/celery/worker.log
+
+# 搜索错误信息
+grep -i error /var/log/celery/worker.log
+
+# 搜索特定任务
+grep -i "generate_daily_pdf_report" /var/log/celery/worker.log
+```
+
+#### 5.1.2 测试脚本日志
+
+运行测试脚本时,日志会同时输出到控制台和文件:
+
+```bash
+# 运行测试脚本(输出到控制台)
+python test_redis_celery.py
+
+# 查看测试日志文件
+tail -f /var/log/celery/test_redis_celery.log
+
+# 运行测试并保存到文件
+python test_redis_celery.py 2>&1 | tee /var/log/celery/test_output.log
+```
+
+测试脚本日志内容示例:
+```
+2024-01-15 10:30:00 | INFO | 开始测试Redis连接...
+2024-01-15 10:30:01 | SUCCESS | Redis连接测试通过!
+2024-01-15 10:30:02 | INFO | 开始测试Celery与Redis集成...
+2024-01-15 10:30:03 | SUCCESS | Celery与Redis集成测试通过!
+```
+
+#### 5.1.3 Redis 日志
+
+Redis 的日志通常在系统日志中:
+
+```bash
+# 查看 Redis 系统日志
+sudo journalctl -u redis-server -f
+
+# 查看 Redis 错误日志
+sudo tail -f /var/log/redis/redis-server.log
+
+# 查看所有 Redis 相关日志
+sudo grep -i redis /var/log/syslog
+```
+
+#### 5.1.4 Django 应用日志
+
+```bash
+# 查看 Django 应用日志
+tail -f /path/to/diary-family/logs/app.log
+
+# 查看 Gunicorn 日志
+sudo tail -f /var/log/gunicorn/access.log
+sudo tail -f /var/log/gunicorn/error.log
+```
+
+#### 5.1.5 Nginx 日志
+
+```bash
+# 查看访问日志
+sudo tail -f /var/log/nginx/access.log
+
+# 查看错误日志
+sudo tail -f /var/log/nginx/error.log
+```
+
+#### 5.1.6 综合日志查看脚本
+
+创建一个综合日志查看脚本:
+
+```bash
+#!/bin/bash
+# save as: /usr/local/bin/view-all-logs
+
+echo "=== Celery Worker Log ==="
+tail -n 20 /var/log/celery/worker.log
+
+echo -e "\n=== Celery Beat Log ==="
+tail -n 20 /var/log/celery/beat.log
+
+echo -e "\n=== Redis Server Log ==="
+sudo tail -n 20 /var/log/redis/redis-server.log
+
+echo -e "\n=== Nginx Error Log ==="
+sudo tail -n 20 /var/log/nginx/error.log
+```
+
+使用方法:
+```bash
+# 给脚本添加执行权限
+sudo chmod +x /usr/local/bin/view-all-logs
+
+# 运行脚本
+view-all-logs
+```
+
+#### 5.1.7 日志轮转配置
+
+为防止日志文件过大,配置日志轮转:
+
+创建 `/etc/logrotate.d/celery-app`:
+```
+/var/log/celery/*.log {
+ daily
+ missingok
+ rotate 14
+ compress
+ delaycompress
+ notifempty
+ create 0640 www-data www-data
+ sharedscripts
+ postrotate
+ supervisorctl restart celery_worker celery_beat > /dev/null 2>&1 || true
+ endscript
+}
+```
+
+启用配置:
+```bash
+sudo logrotate -f /etc/logrotate.d/celery-app
+```
+
+#### 5.1.8 日志查看常见问题
+
+**问题1:日志文件权限被拒绝**
+```bash
+# 检查权限
+ls -la /var/log/celery/
+
+# 如果权限不对,重新设置
+sudo chown -R www-data:www-data /var/log/celery/
+sudo chmod -R 755 /var/log/celery/
+```
+
+**问题2:日志文件不存在**
+```bash
+# 检查目录是否存在
+ls -la /var/log/ | grep celery
+
+# 如果不存在,创建目录
+sudo mkdir -p /var/log/celery/
+sudo chown www-data:www-data /var/log/celery/
+```
+
+**问题3:日志不更新**
+```bash
+# 检查进程是否运行
+ps aux | grep celery
+
+# 检查文件是否被锁定
+sudo lsof /var/log/celery/worker.log
+
+# 检查磁盘空间
+df -h /var/log/
+```
+
+**问题4:如何清理旧日志**
+```bash
+# 删除7天前的日志
+find /var/log/celery/ -name "*.log.*.gz" -mtime +7 -delete
+
+# 清空当前日志文件(谨慎使用)
+sudo truncate -s 0 /var/log/celery/worker.log
+```
+
### 6. 试运行周期任务
当设置一个周期任务后,您可以通过以下方式试运行任务,而不需要等待到指定的时间:
diff --git a/test_redis_celery.py b/test_redis_celery.py
index 0f33743..06d79ab 100644
--- a/test_redis_celery.py
+++ b/test_redis_celery.py
@@ -361,14 +361,40 @@ def main():
return 1
if __name__ == "__main__":
+ import os
+ from pathlib import Path
+
# 配置日志
logger.remove()
+
+ # 创建日志目录
+ log_dir = Path("/var/log/celery")
+ log_dir.mkdir(parents=True, exist_ok=True)
+
+ # 设置日志文件权限
+ log_dir.chmod(0o755)
+
+ # 添加控制台输出
logger.add(
sys.stdout,
format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} - {message}",
level="INFO"
)
+ # 添加日志文件输出
+ log_file = log_dir / "test_redis_celery.log"
+ logger.add(
+ log_file,
+ format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} - {message}",
+ level="INFO",
+ rotation="1 day",
+ retention="7 days",
+ encoding="utf-8"
+ )
+
+ logger.info(f"测试日志将同时输出到控制台和 {log_file}")
+ logger.info("=" * 60)
+
try:
exit_code = main()
sys.exit(exit_code)