跳到主要内容

Open WebUI 日志记录

从快速调试到生产环境的日志 Pipeline,控制 Open WebUI 记录什么、输出到哪里以及如何进行格式化。

Open WebUI 有两个日志层面:用于前端调试的浏览器控制台,以及用于服务器端事件的 Python 后端。大多数配置发生在后端,您可以通过一个环境变量来调整日志的详细程度,或者切换到结构化 JSON 输出,以便与 Loki、Datadog 或 CloudWatch 等日志收集器配合使用。


前端日志记录

前端使用标准的浏览器 console.log() 调用。打开浏览器的开发人员工具(在 macOS 上按 F12Cmd+Option+I),导航至 控制台 (Console) 标签页,您将看到来自客户端应用程序的信息性消息、警告和错误。

各浏览器专属文档:


后端日志记录

后端使用 Python 内置的 logging 模块。默认情况下,日志会以 INFO 级别写入到 标准输出 (stdout),以便在您的终端或容器日志中查看。

日志级别

级别数值适用场景
CRITICAL50灾难性故障;应用程序可能会终止
ERROR40失败的操作;应用程序继续运行,但某些功能已损坏
WARNING30值得调查的意外情况:弃用提示、资源压力等
INFO20正常的操作流程:启动、关键事件、请求处理 (默认)
DEBUG10详细的诊断输出:函数调用、变量值、执行步骤

设置全局日志级别

设置 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。对于生产环境,请坚持使用 INFOWARNING,以保持日志量在可控范围内。


结构化 JSON 日志记录

对于使用日志收集器的生产环境,设置 LOG_FORMAT=json 可以将所有 stdout 输出切换为单行 JSON 对象。

Docker:

--env LOG_FORMAT="json"

Docker Compose:

environment:
  - LOG_FORMAT=json

JSON 字段:

字段描述
tsISO 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)
This content is for informational purposes only and does not constitute a warranty, guarantee, or contractual commitment. Open WebUI is provided "as is." See your license for applicable terms.