54 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
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()
 |