You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4.3 KiB
4.3 KiB
新环境日志问题排查指南
问题描述
在新环境中运行应用程序时,日志输出到控制台但没有创建日志文件记录。
快速诊断步骤
1. 运行诊断脚本
python debug_logging.py
2. 手动测试日志系统
python -c "from app.utils.structured_log import get_structured_logger, LogLevel; logger = get_structured_logger('test', LogLevel.DEBUG); logger.info('测试日志'); logger.error('测试错误日志')"
3. 检查logs目录
# 检查logs目录是否存在
ls -la logs/
# 检查日志文件是否创建
ls -la logs/app.log logs/error.log
常见问题及解决方案
问题1: logs目录不存在
症状: 控制台输出日志,但logs目录不存在 解决方案:
# 结构化日志系统会自动创建logs目录
# 如果手动创建,确保有写入权限
import os
os.makedirs("logs", exist_ok=True)
问题2: 权限不足
症状: 日志输出到控制台,但无法创建文件 解决方案:
# Linux/Mac: 检查目录权限
ls -la logs/
chmod 755 logs/
# Windows: 以管理员身份运行或检查文件夹权限
# 右键logs文件夹 -> 属性 -> 安全 -> 编辑权限
问题3: 磁盘空间不足
症状: 日志输出到控制台,但文件创建失败 解决方案:
# 检查磁盘空间
df -h # Linux/Mac
dir # Windows
# 清理空间或更改日志目录
问题4: 路径问题
症状: 工作目录不正确导致文件创建在错误位置 解决方案:
# 确保在正确的目录下运行
import os
print("当前工作目录:", os.getcwd())
print("logs目录绝对路径:", os.path.abspath("logs"))
问题5: 编码问题
症状: 文件创建但内容乱码或无法写入中文 解决方案:
# 确保使用UTF-8编码
file_handler = logging.FileHandler("logs/app.log", encoding='utf-8')
环境检查清单
✅ 基础环境
- Python版本 >= 3.7
- 工作目录正确
- 有足够的磁盘空间
- 有目录写入权限
✅ 日志系统
- 结构化日志模块可以导入
- 日志记录器可以创建
- 日志可以输出到控制台
- logs目录可以创建
- 日志文件可以写入
✅ 文件系统
- logs目录存在且有写入权限
- app.log文件可以创建和写入
- error.log文件可以创建和写入
- 文件编码为UTF-8
调试命令
检查环境信息
# Python版本
python --version
# 当前目录
pwd # Linux/Mac
cd # Windows
# 目录权限
ls -la logs/ # Linux/Mac
dir logs # Windows
测试文件写入
# 测试基本文件写入
python -c "with open('logs/test.txt', 'w') as f: f.write('test')"
# 测试日志文件写入
python -c "import logging; logging.basicConfig(filename='logs/test.log'); logging.info('test')"
检查日志文件内容
# 查看app.log
tail -f logs/app.log
# 查看error.log
tail -f logs/error.log
# 统计行数
wc -l logs/app.log logs/error.log
日志系统配置
结构化日志配置
from app.utils.structured_log import get_structured_logger, LogLevel
# 创建日志记录器
logger = get_structured_logger("module_name", LogLevel.INFO)
# 记录日志
logger.info("信息日志", extra_param="value")
logger.error("错误日志", error_code=500)
日志文件结构
logs/
├── app.log # 正常日志(DEBUG、INFO、WARNING)
├── error.log # 错误日志(ERROR、CRITICAL)
└── *.log # 其他模块特定日志
故障排除流程
- 运行诊断脚本 → 获取详细环境信息
- 检查基础环境 → 确认Python、目录、权限
- 测试基础日志 → 验证logging模块功能
- 测试结构化日志 → 验证自定义日志系统
- 检查文件权限 → 确认文件系统访问
- 查看错误信息 → 分析具体错误原因
联系支持
如果按照以上步骤仍无法解决问题,请提供:
- 诊断脚本的完整输出
- 操作系统和Python版本信息
- 错误信息和堆栈跟踪
- 环境配置信息
预防措施
- 定期备份日志配置
- 监控磁盘空间使用
- 设置日志轮转机制
- 定期检查日志文件权限
- 在新环境部署前运行诊断脚本