Spaces:
Paused
Paused
| import logging | |
| from base64 import b64encode | |
| from opentelemetry.sdk._logs import ( | |
| LoggingHandler, | |
| LoggerProvider, | |
| ) | |
| from opentelemetry.exporter.otlp.proto.grpc._log_exporter import OTLPLogExporter | |
| from opentelemetry.exporter.otlp.proto.http._log_exporter import ( | |
| OTLPLogExporter as HttpOTLPLogExporter, | |
| ) | |
| from opentelemetry.sdk._logs.export import BatchLogRecordProcessor | |
| from opentelemetry._logs import set_logger_provider | |
| from opentelemetry.sdk.resources import SERVICE_NAME, Resource | |
| from open_webui.env import ( | |
| OTEL_SERVICE_NAME, | |
| OTEL_LOGS_EXPORTER_OTLP_ENDPOINT, | |
| OTEL_LOGS_EXPORTER_OTLP_INSECURE, | |
| OTEL_LOGS_BASIC_AUTH_USERNAME, | |
| OTEL_LOGS_BASIC_AUTH_PASSWORD, | |
| OTEL_LOGS_OTLP_SPAN_EXPORTER, | |
| ) | |
| def setup_logging(): | |
| headers = [] | |
| if OTEL_LOGS_BASIC_AUTH_USERNAME and OTEL_LOGS_BASIC_AUTH_PASSWORD: | |
| auth_string = f"{OTEL_LOGS_BASIC_AUTH_USERNAME}:{OTEL_LOGS_BASIC_AUTH_PASSWORD}" | |
| auth_header = b64encode(auth_string.encode()).decode() | |
| headers = [("authorization", f"Basic {auth_header}")] | |
| resource = Resource.create(attributes={SERVICE_NAME: OTEL_SERVICE_NAME}) | |
| if OTEL_LOGS_OTLP_SPAN_EXPORTER == "http": | |
| exporter = HttpOTLPLogExporter( | |
| endpoint=OTEL_LOGS_EXPORTER_OTLP_ENDPOINT, | |
| headers=headers, | |
| ) | |
| else: | |
| exporter = OTLPLogExporter( | |
| endpoint=OTEL_LOGS_EXPORTER_OTLP_ENDPOINT, | |
| insecure=OTEL_LOGS_EXPORTER_OTLP_INSECURE, | |
| headers=headers, | |
| ) | |
| logger_provider = LoggerProvider(resource=resource) | |
| set_logger_provider(logger_provider) | |
| logger_provider.add_log_record_processor(BatchLogRecordProcessor(exporter)) | |
| otel_handler = LoggingHandler(logger_provider=logger_provider) | |
| return otel_handler | |
| otel_handler = setup_logging() | |