Skip to content

Latest commit

 

History

History
224 lines (183 loc) · 6.69 KB

File metadata and controls

224 lines (183 loc) · 6.69 KB

日志记录功能实现总结

概述

本次更新为 DrawThings WebUI 添加了完整的日志记录功能,用于追踪图片生成和大模型调用的详细过程。

修改的文件

1. app.py

变更内容:

  • 添加 import logging 导入
  • 创建日志目录 logs/
  • 配置两个logger实例:
    • image_logger: 用于图片生成日志
    • llm_logger: 用于LLM调用日志
  • generate_image() 函数中添加日志记录:
    • 开始生成时记录参数(用户ID、尺寸、步数、Seed)
    • 生成成功时记录文件名、耗时、Seed
    • 超时时记录错误信息
    • 连接失败时记录错误信息
    • 其他异常时记录详细错误

代码位置:

  • 第9行: 添加logging导入
  • 第43-59行: 日志配置
  • 第341行: 记录开始生成
  • 第378行: 记录生成成功
  • 第443, 451, 459行: 记录各种错误情况

2. llm_client.py

变更内容:

  • 添加 import logging 导入
  • 配置 llm_logger 实例
  • detect_nsfw_content() 函数中添加日志记录:
    • 配置不完整时的警告
    • 检测开始时的信息
    • API响应状态码
    • 检测结果(NSFW/安全)
    • 数据库更新确认
    • 各种错误情况

代码位置:

  • 第7-10行: 添加logging导入和logger配置
  • 第47-52行: 记录配置警告和检测开始
  • 第95行: 记录API响应
  • 第106-107行: 记录检测结果
  • 第111行: 记录数据库更新
  • 第116, 120, 124行: 记录错误信息

3. ai_refine.py

变更内容:

  • 添加 import logging 导入
  • 配置 llm_logger 实例
  • refine_prompt_with_llm() 函数中添加日志记录:
    • API Key缺失时的错误
    • 润色开始时的信息(原始长度、语言)
    • API响应状态码
    • 润色成功时的信息(原始和润色后长度)
    • API请求失败的错误
    • 网络请求错误

代码位置:

  • 第8行: 添加logging导入
  • 第18-20行: logger配置
  • 第81-86行: 记录API Key错误和润色开始
  • 第126行: 记录API响应
  • 第132-133行: 记录润色成功
  • 第137-138行: 记录API错误
  • 第142-143行: 记录网络错误

4. README.md

变更内容:

  • 在功能特性中添加"日志记录"条目
  • 在项目结构中添加logs目录说明
  • 新增"日志记录功能"章节,包含使用说明
  • 添加相关文档链接

5. docs/LOGGING_FEATURE.md (新建)

内容:

  • 完整的功能说明文档
  • 日志文件格式和示例
  • 查看日志的方法(Windows/Linux/Mac)
  • 测试方法
  • 注意事项和未来改进方向

6. test_logging.py (新建)

内容:

  • 自动化测试脚本
  • 验证日志目录和文件创建
  • 测试日志写入功能
  • 验证日志内容正确性

日志文件

logs/image_generation.log

记录所有图片生成操作:

2026-04-10 22:30:15,123 - INFO - 开始生成图片 - 用户ID: 1, 尺寸: 512x512, 步数: 8, Seed: -1
2026-04-10 22:30:45,456 - INFO - 图片生成成功 - 文件名: generated_20260410_223015.png, 耗时: 30.33秒, Seed: 123456789
2026-04-10 22:31:00,789 - ERROR - 图片生成超时 - 耗时: 600.00秒, 用户ID: 1

logs/llm_calls.log

记录所有大模型API调用:

2026-04-10 22:30:46,789 - INFO - 开始NSFW检测 - 图片ID: 20260410_223015, 提示词长度: 45
2026-04-10 22:30:48,012 - INFO - NSFW检测API响应 - 状态码: 200
2026-04-10 22:30:48,013 - INFO - NSFW检测结果 - 图片ID: 20260410_223015, 结果: 安全, 回答: NO
2026-04-10 22:31:00,234 - INFO - 开始润色提示词 - 原始长度: 30, 语言: zh
2026-04-10 22:31:02,456 - INFO - 提示词润色成功 - 原始长度: 30, 润色后长度: 85

技术细节

日志配置

  • 日志级别: INFO(记录正常操作)、WARNING(警告)、ERROR(错误)
  • 日志格式: %(asctime)s - %(levelname)s - %(message)s
  • 编码: UTF-8(支持中文)
  • 文件模式: 追加模式(不会覆盖历史日志)

Logger设计

使用Python标准库的 logging 模块:

  • 两个独立的logger实例共享同一个日志文件(llm_calls.log)
  • logger名称:
    • image_generation: 图片生成日志
    • llm_calls: LLM调用日志(NSFW检测和提示词润色共用)

线程安全

  • logging模块本身是线程安全的
  • 多个并发请求可以安全地写入日志文件

测试验证

运行测试脚本:

python test_logging.py

测试结果:

============================================================
测试日志记录功能
============================================================

1. 检查日志目录: D:\work\project\my\drawThingsWebUI\logs
   ✓ 日志目录存在

2. 导入app模块...
数据库初始化完成
   ✓ app模块导入成功

3. 检查日志文件:
   - 图片生成日志: D:\work\project\my\drawThingsWebUI\logs\image_generation.log
     ✓ 文件已创建
   - LLM调用日志: D:\work\project\my\drawThingsWebUI\logs\llm_calls.log
     ✓ 文件已创建

4. 测试写入日志...
   ✓ 测试日志写入成功
   ✓ 图片生成日志内容验证通过
   ✓ LLM调用日志内容验证通过

============================================================
✓ 所有测试通过!日志功能正常工作
============================================================

使用方法

查看日志

Windows PowerShell:

# 查看最后50行
Get-Content logs\image_generation.log -Tail 50
Get-Content logs\llm_calls.log -Tail 50

# 实时监控
Get-Content logs\image_generation.log -Wait

Linux/Mac:

# 查看最后50行
tail -n 50 logs/image_generation.log
tail -n 50 logs/llm_calls.log

# 实时监控
tail -f logs/image_generation.log
tail -f logs/llm_calls.log

优势

  1. 问题追踪: 可以快速定位图片生成失败的原因
  2. 性能分析: 通过耗时记录分析性能瓶颈
  3. 审计追踪: 记录所有关键操作,便于审计
  4. 调试支持: 开发和维护时提供详细信息
  5. 用户行为分析: 了解用户使用模式和偏好

注意事项

  1. 磁盘空间: 长期运行需要定期清理或轮转日志
  2. 隐私保护: 日志中包含用户提示词,需妥善保管
  3. 性能影响: 日志写入是同步操作,但影响极小
  4. 编码问题: 使用UTF-8编码,确保正确显示中文

未来改进

  • 添加日志轮转功能(按大小或时间)
  • 添加DEBUG级别的详细日志
  • 支持日志分级输出到不同文件
  • 添加日志分析工具
  • 支持远程日志收集(如ELK栈)
  • 添加日志压缩和归档功能

相关文件

  • app.py: 主应用,图片生成日志
  • llm_client.py: NSFW检测日志
  • ai_refine.py: 提示词润色日志
  • docs/LOGGING_FEATURE.md: 详细功能文档
  • test_logging.py: 测试脚本
  • README.md: 项目说明(已更新)