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_JSONbooleanGCP/AWS와 같은 클라우드 배포에 적합한 상세 JSON 콘솔/stdout 로그를 활성화합니다.CONSOLE_JSON=false

기본적으로 JSON 문자열 길이는 255자로 잘립니다. 다음 환경 변수를 사용하여 이를 구성할 수 있습니다:

KeyTypeDescriptionExample
CONSOLE_JSON_STRING_LENGTHnumberJSON 콘솔/stdout 로그의 문자열 값에 대한 잘림 크기를 설정합니다. 기본값: 255.# CONSOLE_JSON_STRING_LENGTH=255
  • 파일 기반 로그 전송은 기본적으로 활성화되어 있습니다. 배포 시 로그를 stdout/stderr로만 출력하려면 LOG_TO_FILE=false로 설정하세요.
KeyTypeDescriptionExample
LOG_TO_FILEbooleanfile-backed Winston 전송을 비활성화하려면 false로 설정하세요.LOG_TO_FILE=true

OpenTelemetry Tracing

LibreChat은 서버, 데이터베이스, Redis 및 아웃바운드 HTTP 가시성을 위한 백엔드 OpenTelemetry 추적을 내보낼 수 있습니다. Redis 명령 수준 스팬(span)은 선택 사항이므로 기본 추적은 상위 수준으로 유지됩니다. 이는 GenAI 관련 프롬프트 및 모델 관측 가능성을 위해 권장되는 옵션인 Langfuse와는 별개입니다.

KeyTypeDescriptionExample
OTEL_TRACING_ENABLEDboolean백엔드 OpenTelemetry 추적을 활성화합니다.# OTEL_TRACING_ENABLED=false
OTEL_SERVICE_NAMEstringOpenTelemetry에 보고되는 서비스 이름입니다. 기본값: librechat.# OTEL_SERVICE_NAME=librechat
OTEL_SERVICE_VERSIONstringOpenTelemetry에 보고된 서비스 버전입니다.# 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 exporter 헤더.# 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추적(tracing)이 활성화된 경우에도 OpenTelemetry SDK를 비활성화합니다.# OTEL_SDK_DISABLED=false
OTEL_IOREDIS_TRACING_ENABLEDbooleanRedis 명령 수준 스팬을 활성화합니다. 백엔드 추적을 상위 수준으로 유지하기 위해 기본적으로 비활성화되어 있습니다.# OTEL_IOREDIS_TRACING_ENABLED=false

이 가이드는 어떤가요?