System logowania
Ten dokument wyjaśnia, jak korzystać z funkcji logowania w LibreChat, która zapisuje logi błędów i debugowania w folderze `/api/logs`. Możesz używać tych logów do rozwiązywania problemów, monitorowania serwera i zgłaszania błędów. Możesz również wyłączyć logi debugowania, jeśli chcesz zaoszczędzić miejsce.
Ogólne
LibreChat ma wbudowane centralne logowanie w swoim backendzie (api).
- W przypadku instalacji Docker, pliki dziennika są zapisywane w
/logs
- W przypadku instalacji przez npm, pliki dziennika (logi) są zapisywane w
/api/logs
Dzienniki błędów są zapisywane domyślnie. Dzienniki debugowania są włączone domyślnie, ale można je wyłączyć, jeśli nie są potrzebne.
Pozwala to na monitorowanie serwera za pomocą zewnętrznych narzędzi, które analizują pliki dziennika, takich jak stos ELK.
Dzienniki debugowania są niezbędne w pracy programisty i przy rozwiązywaniu problemów. Jeśli napotkasz jakiekolwiek problemy z działaniem LibreChat, odtwórz je w miarę możliwości i zgłoś problem, dołączając swoje logi znajdujące się w ./api/logs/debug-%DATE%.log.
Dzienniki błędów są również zapisywane w tej samej lokalizacji: ./api/logs/error-%DATE%.log. Jeśli masz skonfigurowany Meilisearch, dla niego również istnieje oddzielny plik dziennika.
Uwaga:
Uwaga: Dzienniki są rotowane co 14 dni, więc co 14 dni generowany będzie jeden plik dziennika błędów, jeden plik dziennika debugowania oraz jeden plik dziennika meiliSync. Błędy będą również obecne w plikach dziennika debugowania, jednak pliki dziennika błędów zawierają ślady stosu (stack traces) oraz bardziej szczegółowe informacje.
Konfiguracja
- Włączaj lub wyłączaj logi debugowania za pomocą poniższej zmiennej środowiskowej. Domyślnie, nawet jeśli nigdy nie ustawisz tej zmiennej, logi debugowania będą generowane, ale masz możliwość ich wyłączenia, ustawiając ją na
FALSE.
| Key | Type | Description | Example |
|---|---|---|---|
| DEBUG_LOGGING | boolean | Utrzymuj aktywne logi debugowania. | DEBUG_LOGGING=true |
Uwaga: zaleca się wyłączenie logów debugowania w środowisku produkcyjnym.
- Aby uzyskać szczegółowe dane wyjściowe serwera w konsoli/terminalu, możesz ustawić poniższą wartość na
TRUE:
| Key | Type | Description | Example |
|---|---|---|---|
| DEBUG_CONSOLE | boolean | Włącz szczegółowe logi konsoli/stdout w tym samym formacie, co logi debugowania w pliku. | DEBUG_CONSOLE=false |
Nie jest to jednak zalecane, ponieważ dane wyjściowe mogą być dość rozwlekłe. Funkcja ta jest domyślnie wyłączona i powinna być włączana oszczędnie.
- W przypadku obsługi logów konsoli we wdrożeniach chmurowych (takich jak GCP lub AWS), włączenie tej opcji spowoduje zrzucanie logów ze znacznikiem czasu UTC i sformatowanie ich jako JSON.
| Key | Type | Description | Example |
|---|---|---|---|
| CONSOLE_JSON | boolean | Włącz szczegółowe logi JSON w konsoli/stdout, odpowiednie dla wdrożeń w chmurze, takich jak GCP/AWS. | CONSOLE_JSON=false |
Domyślnie długość ciągu JSON jest przycinana do 255 znaków. Możesz to skonfigurować za pomocą następującej zmiennej środowiskowej:
| Key | Type | Description | Example |
|---|---|---|---|
| CONSOLE_JSON_STRING_LENGTH | number | Skonfiguruj rozmiar ucięcia dla wartości ciągów znaków w logach konsoli/stdout w formacie JSON. Domyślnie: 255. | # CONSOLE_JSON_STRING_LENGTH=255 |
- Transporty logów oparte na plikach są domyślnie włączone. Ustaw
LOG_TO_FILE=false, jeśli Twoje wdrożenie powinno wysyłać logi wyłącznie do stdout/stderr.
| Key | Type | Description | Example |
|---|---|---|---|
| LOG_TO_FILE | boolean | Ustaw na false, aby wyłączyć transporty Winston oparte na plikach. | LOG_TO_FILE=true |
Śledzenie OpenTelemetry
LibreChat może emitować ślady OpenTelemetry backendu dla serwera, bazy danych, Redis oraz widoczności wychodzącego ruchu HTTP. Spany na poziomie poleceń Redis są opcjonalne, dzięki czemu domyślne ślady pozostają na wysokim poziomie szczegółowości. Jest to oddzielne rozwiązanie od Langfuse, które pozostaje zalecaną opcją dla obserwowalności promptów i modeli specyficznych dla GenAI.
| Key | Type | Description | Example |
|---|---|---|---|
| OTEL_TRACING_ENABLED | boolean | Włącz śledzenie OpenTelemetry dla backendu. | # OTEL_TRACING_ENABLED=false |
| OTEL_SERVICE_NAME | string | Nazwa usługi raportowana do OpenTelemetry. Domyślnie: librechat. | # OTEL_SERVICE_NAME=librechat |
| OTEL_SERVICE_VERSION | string | Wersja usługi zgłaszana do OpenTelemetry. | # OTEL_SERVICE_VERSION= |
| OTEL_EXPORTER_OTLP_ENDPOINT | string | Podstawowy endpoint eksportera OTLP. | # OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 |
| OTEL_EXPORTER_OTLP_TRACES_ENDPOINT | string | Punkt końcowy OTLP specyficzny dla śledzenia. | # OTEL_EXPORTER_OTLP_TRACES_ENDPOINT= |
| OTEL_EXPORTER_OTLP_HEADERS | string | Nagłówki eksportera OTLP. | # OTEL_EXPORTER_OTLP_HEADERS= |
| OTEL_TRACES_EXPORTER | string | Wybór eksportera śledzenia. | # OTEL_TRACES_EXPORTER=otlp |
| OTEL_TRACES_SAMPLER | string | Próbkownik śladów OpenTelemetry. | # OTEL_TRACES_SAMPLER=parentbased_always_on |
| OTEL_LOG_LEVEL | string | Poziom logowania OpenTelemetry SDK. | # OTEL_LOG_LEVEL=INFO |
| OTEL_SDK_DISABLED | boolean | Wyłącz SDK OpenTelemetry, nawet gdy śledzenie jest włączone. | # OTEL_SDK_DISABLED=false |
| OTEL_IOREDIS_TRACING_ENABLED | boolean | Włącz zakresy na poziomie poleceń Redis. Domyślnie wyłączone, aby zachować wysoki poziom śledzenia backendu. | # OTEL_IOREDIS_TRACING_ENABLED=false |
Jaka jest ta instrukcja?