日志系统
本文档介绍了如何使用 LibreChat 的日志功能,该功能会将错误和调试日志保存到 `/api/logs` 文件夹中。您可以使用这些日志来排查问题、监控服务器以及报告错误。如果您想节省空间,也可以禁用调试日志。
常规
LibreChat 在其后端 (api) 中内置了中央日志记录功能。
- 使用 Docker 安装时,日志文件保存在
/logs中
- 使用 npm 安装时,日志文件会保存在
/api/logs中
错误日志默认会被保存。调试日志默认处于启用状态,但如果不需要,可以将其关闭。
这允许您通过检查日志文件的外部工具(例如 the ELK stack)来监控您的服务器。
调试日志对于开发工作和修复问题至关重要。如果您在运行 LibreChat 时遇到任何问题,请尽可能复现该问题,并附上您在 ./api/logs/debug-%DATE%.log 中找到的日志,报告该问题。
错误日志也保存在相同的位置:./api/logs/error-%DATE%.log。如果您配置了 Meilisearch,也会有一个单独的日志文件用于记录相关信息。
注意:
注意:日志每 14 天轮换一次,因此每 14 天会生成一个错误日志文件、一个调试日志文件和一个 meiliSync 日志文件。错误也会出现在调试日志文件中,但错误日志文件会提供堆栈跟踪和更多详细信息。
设置
- 通过以下环境变量切换调试日志。默认情况下,即使您从未设置此变量,也会生成调试日志,但您可以将其设置为
FALSE来禁用它们。
| Key | Type | Description | Example |
|---|---|---|---|
| DEBUG_LOGGING | boolean | 保持调试日志处于活动状态。 | DEBUG_LOGGING=true |
注意:建议在生产环境中禁用调试日志。
- 若要在控制台/终端中查看详细的服务器输出,您可以将以下内容设置为
TRUE:
| Key | Type | Description | Example |
|---|---|---|---|
| DEBUG_CONSOLE | boolean | 启用与文件调试日志格式相同的详细控制台/stdout日志。 | DEBUG_CONSOLE=false |
但不建议这样做,因为输出可能会非常冗长。此功能默认处于禁用状态,应谨慎启用。
- 在云部署(如 GCP 或 AWS)中处理控制台日志时,启用此选项将以 UTC 时间戳转储日志并将其格式化为 JSON。
| Key | Type | Description | Example |
|---|---|---|---|
| CONSOLE_JSON | boolean | 启用适用于 GCP/AWS 等云部署环境的详细 JSON 控制台/标准输出日志。 | CONSOLE_JSON=false |
默认情况下,JSON 字符串长度会被截断为 255 个字符。你可以通过以下环境变量进行配置:
| Key | Type | Description | Example |
|---|---|---|---|
| CONSOLE_JSON_STRING_LENGTH | number | 配置 JSON 控制台/stdout 日志中字符串值的截断长度。默认值:255。 | # CONSOLE_JSON_STRING_LENGTH=255 |
- 默认启用基于文件的日志传输。如果您的部署仅需将日志输出到 stdout/stderr,请设置
LOG_TO_FILE=false。
| Key | Type | Description | Example |
|---|---|---|---|
| LOG_TO_FILE | boolean | 设置为 false 以禁用基于文件的 Winston 传输。 | LOG_TO_FILE=true |
OpenTelemetry 追踪
LibreChat 可以为服务器、数据库、Redis 和出站 HTTP 可见性发出后端 OpenTelemetry 追踪。Redis 命令级别的 span 是可选的,因此默认追踪保持在高层级。这与 Langfuse 不同,后者仍然是针对 GenAI 特定提示词和模型可观测性的推荐选项。
| Key | Type | Description | Example |
|---|---|---|---|
| OTEL_TRACING_ENABLED | boolean | 启用后端 OpenTelemetry 追踪。 | # OTEL_TRACING_ENABLED=false |
| OTEL_SERVICE_NAME | string | 向 OpenTelemetry 报告的服务名称。默认值:librechat。 | # OTEL_SERVICE_NAME=librechat |
| OTEL_SERVICE_VERSION | string | 向 OpenTelemetry 报告的服务版本。 | # OTEL_SERVICE_VERSION= |
| OTEL_EXPORTER_OTLP_ENDPOINT | string | 基础 OTLP exporter endpoint。 | # OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 |
| OTEL_EXPORTER_OTLP_TRACES_ENDPOINT | string | 追踪特定的 OTLP endpoint。 | # OTEL_EXPORTER_OTLP_TRACES_ENDPOINT= |
| OTEL_EXPORTER_OTLP_HEADERS | string | OTLP 导出器标头 | # OTEL_EXPORTER_OTLP_HEADERS= |
| OTEL_TRACES_EXPORTER | string | Trace exporter 选择。 | # OTEL_TRACES_EXPORTER=otlp |
| OTEL_TRACES_SAMPLER | string | OpenTelemetry 追踪采样器。 | # OTEL_TRACES_SAMPLER=parentbased_always_on |
| OTEL_LOG_LEVEL | string | OpenTelemetry SDK 日志级别。 | # OTEL_LOG_LEVEL=INFO |
| OTEL_SDK_DISABLED | boolean | 即使启用了追踪功能,也禁用 OpenTelemetry SDK。 | # OTEL_SDK_DISABLED=false |
| OTEL_IOREDIS_TRACING_ENABLED | boolean | 启用 Redis 命令级追踪。默认情况下为禁用,以保持后端追踪处于高层级。 | # OTEL_IOREDIS_TRACING_ENABLED=false |
这篇指南怎么样?