Open WebUI 日志记录
从快速调试到生产环境的日志 Pipeline,控制 Open WebUI 记录什么、输出到哪里以及如何进行格式化。
Open WebUI 有两个日志层面:用于前端调试的浏览器控制台,以及用于服务器端事件的 Python 后端。大多数配置发生在后端,您可以通过一个环境变量来调整日志的详细程度,或者切换到结构化 JSON 输出,以便与 Loki、Datadog 或 CloudWatch 等日志收集器配合使用。
前端日志记录
前端使用标准的浏览器 console.log() 调用。打开浏览器的开发人员工具(在 macOS 上按 F12 或 Cmd+Option+I),导航至 控制台 (Console) 标签页,您将看到来自客户端应用程序的信息性消息、警告和错误。
各浏览器专属文档:
后端日志记录
后端使用 Python 内置的 logging 模块。默认情况下,日志会以 INFO 级别写入到 标准输出 (stdout),以便在您的终端或容器日志中查看。
日志级别
| 级别 | 数值 | 适用场景 |
|---|---|---|
CRITICAL | 50 | 灾难性故障;应用程序可能会终止 |
ERROR | 40 | 失败的操作;应用程序继续运行,但某些功能已损坏 |
WARNING | 30 | 值得调查的意外情况:弃用提示、资源压力等 |
INFO | 20 | 正常的操作流程:启动、关键事件、请求处理 (默认) |
DEBUG | 10 | 详细的诊断输出:函数调用、变量值、执行步骤 |
设置全局日志级别
设置 GLOBAL_LOG_LEVEL 可以更改整个后端的详细程度。这会通过 logging.basicConfig(force=True) 配置 Python 的根日志记录器(Root Logger),从而影响所有的 Open WebUI 日志记录器以及大多数第三方库。
Docker:
--env GLOBAL_LOG_LEVEL="DEBUG"Docker Compose:
environment:
- GLOBAL_LOG_LEVEL=DEBUG提示
在开发和排查故障时使用 DEBUG。对于生产环境,请坚持使用 INFO 或 WARNING,以保持日志量在可控范围内。
结构化 JSON 日志记录
对于使用日志收集器的生产环境,设置 LOG_FORMAT=json 可以将所有 stdout 输出切换为单行 JSON 对象。
Docker:
--env LOG_FORMAT="json"Docker Compose:
environment:
- LOG_FORMAT=jsonJSON 字段:
| 字段 | 描述 |
|---|---|
ts | ISO 8601 时间戳 |
level | 日志级别 (debug, info, warn, error, fatal) |
msg | 日志消息 |
caller | 源码位置 (module:function:line) |
extra | 额外的上下文数据(如果有) |
error | 错误详情(如果适用) |
stacktrace | 堆栈追踪(如果适用) |
输出示例:
{"ts": "2026-02-22T20:14:53.386+00:00", "level": "info", "msg": "GLOBAL_LOG_LEVEL: INFO", "caller": "open_webui.env"}
{"ts": "2026-02-22T20:15:02.245+00:00", "level": "info", "msg": "Context impl SQLiteImpl.", "caller": "alembic.runtime.migration"}备注
- 默认行为(未设置
LOG_FORMAT)保持不变:输出纯文本 - 当
LOG_FORMAT=json时,ASCII 字符横幅将被禁用,以保持日志流的可解析性 - JSON 日志记录同时涵盖早期启动日志(标准库
logging)和运行时的日志(Loguru)