Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

日志系统

本文档介绍了如何使用 LibreChat 的日志功能,该功能会将错误和调试日志保存到 `/api/logs` 文件夹中。您可以使用这些日志来排查问题、监控服务器以及报告错误。如果您想节省空间,也可以禁用调试日志。

常规

LibreChat 在其后端 (api) 中内置了中央日志记录功能。

  • 使用 Docker 安装时,日志文件保存在 /logs
debug-2024-01-01.log
error-2024-01-01.log
meiliSync-2024-01-01.log
  • 使用 npm 安装时,日志文件会保存在 /api/logs
debug-2024-01-01.log
error-2024-01-01.log
meiliSync-2024-01-01.log

错误日志默认会被保存。调试日志默认处于启用状态,但如果不需要,可以将其关闭。

这允许您通过检查日志文件的外部工具(例如 the ELK stack)来监控您的服务器。

调试日志对于开发工作和修复问题至关重要。如果您在运行 LibreChat 时遇到任何问题,请尽可能复现该问题,并附上您在 ./api/logs/debug-%DATE%.log 中找到的日志,报告该问题

错误日志也保存在相同的位置:./api/logs/error-%DATE%.log。如果您配置了 Meilisearch,也会有一个单独的日志文件用于记录相关信息。

注意:

注意:日志每 14 天轮换一次,因此每 14 天会生成一个错误日志文件、一个调试日志文件和一个 meiliSync 日志文件。错误也会出现在调试日志文件中,但错误日志文件会提供堆栈跟踪和更多详细信息。

设置

  • 通过以下环境变量切换调试日志。默认情况下,即使您从未设置此变量,也会生成调试日志,但您可以将其设置为 FALSE 来禁用它们。
KeyTypeDescriptionExample
DEBUG_LOGGINGboolean保持调试日志处于活动状态。DEBUG_LOGGING=true

注意:建议在生产环境中禁用调试日志。

  • 若要在控制台/终端中查看详细的服务器输出,您可以将以下内容设置为 TRUE
KeyTypeDescriptionExample
DEBUG_CONSOLEboolean启用与文件调试日志格式相同的详细控制台/stdout日志。DEBUG_CONSOLE=false

但不建议这样做,因为输出可能会非常冗长。此功能默认处于禁用状态,应谨慎启用。

  • 在云部署(如 GCP 或 AWS)中处理控制台日志时,启用此选项将以 UTC 时间戳转储日志并将其格式化为 JSON。
KeyTypeDescriptionExample
CONSOLE_JSONboolean启用适用于 GCP/AWS 等云部署环境的详细 JSON 控制台/标准输出日志。CONSOLE_JSON=false

默认情况下,JSON 字符串长度会被截断为 255 个字符。你可以通过以下环境变量进行配置:

KeyTypeDescriptionExample
CONSOLE_JSON_STRING_LENGTHnumber配置 JSON 控制台/stdout 日志中字符串值的截断长度。默认值:255。# CONSOLE_JSON_STRING_LENGTH=255
  • 默认启用基于文件的日志传输。如果您的部署仅需将日志输出到 stdout/stderr,请设置 LOG_TO_FILE=false
KeyTypeDescriptionExample
LOG_TO_FILEboolean设置为 false 以禁用基于文件的 Winston 传输。LOG_TO_FILE=true

OpenTelemetry 追踪

LibreChat 可以为服务器、数据库、Redis 和出站 HTTP 可见性发出后端 OpenTelemetry 追踪。Redis 命令级别的 span 是可选的,因此默认追踪保持在高层级。这与 Langfuse 不同,后者仍然是针对 GenAI 特定提示词和模型可观测性的推荐选项。

KeyTypeDescriptionExample
OTEL_TRACING_ENABLEDboolean启用后端 OpenTelemetry 追踪。# OTEL_TRACING_ENABLED=false
OTEL_SERVICE_NAMEstring向 OpenTelemetry 报告的服务名称。默认值:librechat。# OTEL_SERVICE_NAME=librechat
OTEL_SERVICE_VERSIONstring向 OpenTelemetry 报告的服务版本。# OTEL_SERVICE_VERSION=
OTEL_EXPORTER_OTLP_ENDPOINTstring基础 OTLP exporter endpoint。# OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
OTEL_EXPORTER_OTLP_TRACES_ENDPOINTstring追踪特定的 OTLP endpoint。# OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=
OTEL_EXPORTER_OTLP_HEADERSstringOTLP 导出器标头# OTEL_EXPORTER_OTLP_HEADERS=
OTEL_TRACES_EXPORTERstringTrace exporter 选择。# OTEL_TRACES_EXPORTER=otlp
OTEL_TRACES_SAMPLERstringOpenTelemetry 追踪采样器。# OTEL_TRACES_SAMPLER=parentbased_always_on
OTEL_LOG_LEVELstringOpenTelemetry SDK 日志级别。# OTEL_LOG_LEVEL=INFO
OTEL_SDK_DISABLEDboolean即使启用了追踪功能,也禁用 OpenTelemetry SDK。# OTEL_SDK_DISABLED=false
OTEL_IOREDIS_TRACING_ENABLEDboolean启用 Redis 命令级追踪。默认情况下为禁用,以保持后端追踪处于高层级。# OTEL_IOREDIS_TRACING_ENABLED=false

这篇指南怎么样?