Sistema di logging
Questo documento spiega come utilizzare la funzionalità di logging di LibreChat, che salva i log di errore e di debug nella cartella `/api/logs`. Puoi utilizzare questi log per risolvere problemi, monitorare il tuo server e segnalare bug. Puoi anche disabilitare i log di debug se desideri risparmiare spazio.
Generale
LibreChat ha un sistema di logging centrale integrato nel suo backend (api).
- Con l'installazione docker, i file di log vengono salvati in
/logs
- Con l'installazione npm, i file di log vengono salvati in
/api/logs
I log di errore vengono salvati per impostazione predefinita. I log di debug sono abilitati per impostazione predefinita, ma possono essere disattivati se non desiderati.
Ciò ti consente di monitorare il tuo server tramite strumenti esterni che analizzano i file di log, come lo stack ELK.
I log di debug sono essenziali per il lavoro di sviluppo e per la risoluzione dei problemi. Se riscontri problemi durante l'esecuzione di LibreChat, riproducili il più fedelmente possibile e segnala il problema includendo i log che trovi in ./api/logs/debug-%DATE%.log.
I log degli errori vengono salvati nella stessa posizione: ./api/logs/error-%DATE%.log. Se hai configurato meilisearch, esiste un file di log separato anche per questo.
Nota:
Nota: i log vengono ruotati ogni 14 giorni, quindi genererai un file di log degli errori, un file di log di debug e un file di log meiliSync ogni 14 giorni. Gli errori saranno presenti anche nei file di log di debug, ma i file di log degli errori forniranno stack trace e maggiori dettagli.
Configurazione
- Attiva o disattiva i log di debug con la seguente variabile d'ambiente. Per impostazione predefinita, anche se non imposti mai questa variabile, i log di debug verranno generati, ma hai la possibilità di disabilitarli impostandola su
FALSE.
| Key | Type | Description | Example |
|---|---|---|---|
| DEBUG_LOGGING | boolean | Mantieni attivi i log di debug. | DEBUG_LOGGING=true |
Nota: si consiglia di disabilitare i log di debug in un ambiente di produzione.
- Per un output del server dettagliato nella console/terminale, è possibile impostare quanto segue su
TRUE:
| Key | Type | Description | Example |
|---|---|---|---|
| DEBUG_CONSOLE | boolean | Abilita i log dettagliati della console/stdout nello stesso formato dei log di debug dei file. | DEBUG_CONSOLE=false |
Tuttavia, questo non è consigliato, poiché gli output possono essere piuttosto prolissi. È disabilitato per impostazione predefinita e dovrebbe essere abilitato con parsimonia.
- Quando si gestiscono i log della console in distribuzioni cloud (come GCP o AWS), l'abilitazione di questa opzione scaricherà i log con un timestamp UTC e li formatterà come JSON.
| Key | Type | Description | Example |
|---|---|---|---|
| CONSOLE_JSON | boolean | Abilita log dettagliati in formato JSON su console/stdout adatti a distribuzioni cloud come GCP/AWS. | CONSOLE_JSON=false |
Per impostazione predefinita, la lunghezza della stringa JSON viene troncata a 255 caratteri. È possibile configurarla con la seguente variabile d'ambiente:
| Key | Type | Description | Example |
|---|---|---|---|
| CONSOLE_JSON_STRING_LENGTH | number | Configura la dimensione di troncamento per i valori stringa nei log della console/stdout JSON. Predefinito: 255. | # CONSOLE_JSON_STRING_LENGTH=255 |
- I trasporti di log basati su file sono abilitati per impostazione predefinita. Imposta
LOG_TO_FILE=falsese la tua distribuzione deve emettere i log solo su stdout/stderr.
| Key | Type | Description | Example |
|---|---|---|---|
| LOG_TO_FILE | boolean | Impostare su false per disabilitare i transport Winston basati su file. | LOG_TO_FILE=true |
Tracciamento OpenTelemetry
LibreChat può emettere tracce OpenTelemetry del backend per la visibilità di server, database, Redis e HTTP in uscita. Gli span a livello di comando di Redis sono facoltativi, in modo che le tracce predefinite rimangano ad alto livello. Questo è separato da Langfuse, che rimane l'opzione consigliata per l'osservabilità di prompt e modelli specifici per la GenAI.
| Key | Type | Description | Example |
|---|---|---|---|
| OTEL_TRACING_ENABLED | boolean | Abilita il tracing OpenTelemetry del backend. | # OTEL_TRACING_ENABLED=false |
| OTEL_SERVICE_NAME | string | Nome del servizio segnalato a OpenTelemetry. Predefinito: librechat. | # OTEL_SERVICE_NAME=librechat |
| OTEL_SERVICE_VERSION | string | Versione del servizio segnalata a OpenTelemetry. | # OTEL_SERVICE_VERSION= |
| OTEL_EXPORTER_OTLP_ENDPOINT | string | Endpoint dell'exporter OTLP di base. | # OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 |
| OTEL_EXPORTER_OTLP_TRACES_ENDPOINT | string | Endpoint OTLP specifico per le tracce. | # OTEL_EXPORTER_OTLP_TRACES_ENDPOINT= |
| OTEL_EXPORTER_OTLP_HEADERS | string | Intestazioni dell'exporter OTLP. | # OTEL_EXPORTER_OTLP_HEADERS= |
| OTEL_TRACES_EXPORTER | string | Selezione dell'esportatore di tracce. | # OTEL_TRACES_EXPORTER=otlp |
| OTEL_TRACES_SAMPLER | string | Campionatore di tracce OpenTelemetry. | # OTEL_TRACES_SAMPLER=parentbased_always_on |
| OTEL_LOG_LEVEL | string | Livello di log dell'OpenTelemetry SDK. | # OTEL_LOG_LEVEL=INFO |
| OTEL_SDK_DISABLED | boolean | Disabilita l'SDK OpenTelemetry anche quando il tracing è abilitato. | # OTEL_SDK_DISABLED=false |
| OTEL_IOREDIS_TRACING_ENABLED | boolean | Abilita gli span a livello di comando Redis. Disabilitato per impostazione predefinita per mantenere le tracce del backend ad alto livello. | # OTEL_IOREDIS_TRACING_ENABLED=false |
Com’è questa guida?