Sistema de Logs
Este documento explica como usar o recurso de log do LibreChat, que salva logs de erro e depuração na pasta `/api/logs`. Você pode usar esses logs para solucionar problemas, monitorar seu servidor e relatar bugs. Você também pode desativar os logs de depuração se quiser economizar espaço.
Geral
O LibreChat possui um sistema de log centralizado integrado ao seu backend (api).
- Com a instalação Docker, os arquivos de log são salvos em
/logs
- Com a instalação via npm, os arquivos de log são salvos em
/api/logs
Os logs de erro são salvos por padrão. Os logs de depuração são habilitados por padrão, mas podem ser desativados se não forem desejados.
Isso permite que você monitore seu servidor por meio de ferramentas externas que inspecionam arquivos de log, como o ELK stack.
Logs de depuração são essenciais para o trabalho de desenvolvimento e para a correção de problemas. Se você encontrar qualquer problema ao executar o LibreChat, reproduza-o o mais próximo possível e relate o problema com seus logs encontrados em ./api/logs/debug-%DATE%.log.
Os logs de erros também são salvos no mesmo local: ./api/logs/error-%DATE%.log. Se você tiver o meilisearch configurado, há um arquivo de log separado para isso também.
Nota:
Nota: Os logs são rotacionados a cada 14 dias, portanto, você gerará um arquivo de log de erro, um arquivo de log de depuração e um arquivo de log meiliSync a cada 14 dias. Os erros também estarão presentes nos arquivos de log de depuração, mas os arquivos de log de erro fornecem rastreamentos de pilha (stack traces) e mais detalhes.
Configuração
- Alterne os logs de depuração com a seguinte variável de ambiente. Por padrão, mesmo que você nunca defina esta variável, os logs de depuração serão gerados, mas você tem a opção de desativá-los definindo-a como
FALSE.
| Key | Type | Description | Example |
|---|---|---|---|
| DEBUG_LOGGING | boolean | Manter logs de depuração ativos. | DEBUG_LOGGING=true |
Nota: é recomendado desativar os logs de depuração em um ambiente de produção.
- Para uma saída detalhada do servidor no console/terminal, você pode definir o seguinte como
TRUE:
| Key | Type | Description | Example |
|---|---|---|---|
| DEBUG_CONSOLE | boolean | Habilitar logs detalhados no console/stdout no mesmo formato dos logs de depuração de arquivo. | DEBUG_CONSOLE=false |
Isso não é recomendado, no entanto, pois as saídas podem ser bastante verbosas. Está desativado por padrão e deve ser habilitado com moderação.
- Ao lidar com logs de console em implantações na nuvem (como GCP ou AWS), habilitar isso fará o dump dos logs com um carimbo de data/hora UTC e os formatará como JSON.
| Key | Type | Description | Example |
|---|---|---|---|
| CONSOLE_JSON | boolean | Habilite logs de console/stdout JSON detalhados, adequados para implantações em nuvem como GCP/AWS. | CONSOLE_JSON=false |
Por padrão, o comprimento da string JSON é truncado para 255 caracteres. Você pode configurar isso com a seguinte variável de ambiente:
| Key | Type | Description | Example |
|---|---|---|---|
| CONSOLE_JSON_STRING_LENGTH | number | Configure o tamanho de truncamento para valores de string nos logs do console/stdout em JSON. Padrão: 255. | # CONSOLE_JSON_STRING_LENGTH=255 |
- Os transportes de log baseados em arquivo estão habilitados por padrão. Defina
LOG_TO_FILE=falsese a sua implantação deve emitir logs apenas para stdout/stderr.
| Key | Type | Description | Example |
|---|---|---|---|
| LOG_TO_FILE | boolean | Defina como false para desativar os transportes Winston baseados em arquivo. | LOG_TO_FILE=true |
Rastreamento OpenTelemetry
O LibreChat pode emitir traces de OpenTelemetry do backend para visibilidade de servidor, banco de dados, Redis e HTTP de saída. Os spans em nível de comando do Redis são opcionais, para que os traces padrão permaneçam em alto nível. Isso é separado do Langfuse, que continua sendo a opção recomendada para observabilidade de prompts e modelos específicos de GenAI.
| Key | Type | Description | Example |
|---|---|---|---|
| OTEL_TRACING_ENABLED | boolean | Habilitar rastreamento OpenTelemetry no backend. | # OTEL_TRACING_ENABLED=false |
| OTEL_SERVICE_NAME | string | Nome do serviço reportado ao OpenTelemetry. Padrão: librechat. | # OTEL_SERVICE_NAME=librechat |
| OTEL_SERVICE_VERSION | string | Versão do serviço reportada ao OpenTelemetry. | # OTEL_SERVICE_VERSION= |
| OTEL_EXPORTER_OTLP_ENDPOINT | string | Endpoint base do exportador OTLP. | # OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 |
| OTEL_EXPORTER_OTLP_TRACES_ENDPOINT | string | Endpoint OTLP específico para rastreamento. | # OTEL_EXPORTER_OTLP_TRACES_ENDPOINT= |
| OTEL_EXPORTER_OTLP_HEADERS | string | Cabeçalhos do exportador OTLP. | # OTEL_EXPORTER_OTLP_HEADERS= |
| OTEL_TRACES_EXPORTER | string | Seleção do exportador de rastreamento. | # OTEL_TRACES_EXPORTER=otlp |
| OTEL_TRACES_SAMPLER | string | Amostrador de rastreamento OpenTelemetry. | # OTEL_TRACES_SAMPLER=parentbased_always_on |
| OTEL_LOG_LEVEL | string | Nível de log do SDK OpenTelemetry. | # OTEL_LOG_LEVEL=INFO |
| OTEL_SDK_DISABLED | boolean | Desabilite o SDK do OpenTelemetry mesmo quando o rastreamento estiver ativado. | # OTEL_SDK_DISABLED=false |
| OTEL_IOREDIS_TRACING_ENABLED | boolean | Habilitar spans de nível de comando do Redis. Desabilitado por padrão para manter os rastreamentos do backend em alto nível. | # OTEL_IOREDIS_TRACING_ENABLED=false |
Como está este guia?