
    Zj#                    d   U d dl mZ d dlZd dlmZ d dlmZmZmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZmZmZmZ d dlmZ  ej        e           Z!dZ"dZ#dZ$dZ%d2dZ&d3dZ'd4dZ(e'e(d dZ)de*d<   d5d!Z+d6d$Z,d7d'Z-d8d*Z.	 d9d:d/Z/	 d9d;d1Z0dS )<    )annotationsN)set_logger_provider)_map_compression_parse_headersload_entry_point)ConfigurationError)BatchLogRecordProcessor)LoggerProvider)LogRecordExporter)LogRecordProcessor)OtlpGrpcExporter)OtlpHttpExporter)SimpleLogRecordProcessor)r	   ConsoleLogRecordExporterr   r   )Resourcei  i0u  i   i   returnr   c                     t                      S )z"Create a ConsoleLogRecordExporter.r        n/var/www/FlaskApp/flask-venv/lib/python3.11/site-packages/opentelemetry/sdk/_configuration/_logger_provider.py_create_console_log_exporterr   6   s    #%%%r   configOtlpHttpExporterConfigr   c                   	 ddl m} ddlm} n"# t          $ r}t          d          |d}~ww xY wt          | j        |d          }t          | j	        | j
                  }| j        
| j        dz  nd} || j        |||	          S )
z-Create an OTLP HTTP log exporter from config.r   )CompressionOTLPLogExporterzotlp_http log exporter requires 'opentelemetry-exporter-otlp-proto-http'. Install it with: pip install opentelemetry-exporter-otlp-proto-httpNT)allow_deflate     @@endpointheaderstimeoutcompression)&opentelemetry.exporter.otlp.proto.httpr   4opentelemetry.exporter.otlp.proto.http._log_exporterr   ImportErrorr   r   r%   r   r#   headers_listr$   r"   )r   r   r   excr%   r#   r$   s          r   _create_otlp_http_log_exporterr+   ;   s    	
 	
 	
 	
 	
 	
	
 	
 	
 	
 	
 	
 	
     R
 
 	 #Kt  K V^V-@AAG+1>+Ev~&&4G?	   s    
.).OtlpGrpcExporterConfigc                   	 ddl }ddlm} n"# t          $ r}t	          d          |d}~ww xY wt          | j        |j                  }t          | j	        | j
                  }| j        
| j        dz  nd} || j        |||          S )z-Create an OTLP gRPC log exporter from config.r   Nr   zotlp_grpc log exporter requires 'opentelemetry-exporter-otlp-proto-grpc'. Install it with: pip install opentelemetry-exporter-otlp-proto-grpcr    r!   )grpc4opentelemetry.exporter.otlp.proto.grpc._log_exporterr   r(   r   r   r%   r   r   r#   r)   r$   r"   )r   r.   r   r*   r%   r#   r$   s          r   _create_otlp_grpc_log_exporterr0   [   s    	
 	
 	
 	
 	
 	
 	
     R
 
 	 #6#5t7GHHKV^V-@AAG+1>+Ev~&&4G?	   s   
 
,',c                    t                      S Nr   )_s    r   <lambda>r4   {   s    133 r   )	otlp_http	otlp_grpcconsoledict_LOG_EXPORTER_REGISTRYLogRecordExporterConfigc                t   | j         t          d          t                                          D ]%\  }}t	          | |d          }| ||          c S &| j        rNt          t          | j                                                            \  }} t          d|          di |pi S t          d          )a=  Create a log record exporter from config.

    Known exporter types are checked via typed fields on the LogRecordExporter
    dataclass. Unknown exporter names captured in additional_properties
    by the @_additional_properties decorator are loaded via the
    ``opentelemetry_logs_exporter`` entry point group.
    NzIotlp_file_development log exporter is experimental and not yet supported.opentelemetry_logs_exporterziNo exporter type specified in log record exporter config. Supported types: console, otlp_http, otlp_grpc.r   )	otlp_file_developmentr   r9   itemsgetattradditional_propertiesnextiterr   )r   namefactoryvalueplugin_configs        r   _create_log_record_exporterrG      s     #/ %
 
 	
 05577 " "gd++75>>!!! # 
"4(D(J(J(L(L#M#MNNmD =tDD 
 
"
 
 	
 	:  r   BatchLogRecordProcessorConfigr	   c                .   t          | j                  }| j        | j        nt          }| j        | j        nt
          }| j        | j        nt          }| j        | j        nt          }t          |t          |          t          |          ||          S )zyCreate a BatchLogRecordProcessor from config.

    Passes explicit defaults to suppress OTEL_BLRP_* env var reading.
    N)exporterschedule_delay_millisexport_timeout_millismax_queue_sizemax_export_batch_size)rG   rJ   schedule_delay_DEFAULT_SCHEDULE_DELAY_MILLISexport_timeout_DEFAULT_EXPORT_TIMEOUT_MILLISrM   _DEFAULT_MAX_QUEUE_SIZErN   _DEFAULT_MAX_EXPORT_BATCH_SIZEr	   float)r   rJ   rO   rQ   rM   rN   s         r   "_create_batch_log_record_processorrV      s     +6?;;H  , 	+   , 	+   , 	$  '3 	$$+ 
 ##N33#N33%3   r   SimpleLogRecordProcessorConfigr   c                H    t          | j                  }t          |          S )z.Create a SimpleLogRecordProcessor from config.)rG   rJ   r   )r   rJ   s     r   #_create_simple_log_record_processorrY      s!     +6?;;H#H---r   LogRecordProcessorConfig2BatchLogRecordProcessor | SimpleLogRecordProcessorc                    | j         t          | j                   S | j        t          | j                  S t	          d          )z*Create a log record processor from config.Nz[No processor type specified in log record processor config. Supported types: batch, simple.)batchrV   simplerY   r   )r   s    r   _create_log_record_processorr_      sK     |1&,???} 26=AAA
	*  r   LoggerProviderConfig | NoneresourceResource | Noner
   c                    t          |          }| |S | j        t                              d           | j        D ]$}|                    t          |                     %|S )a  Create an SDK LoggerProvider from declarative config.

    Does NOT read OTEL_BLRP_* or other env vars for values explicitly
    controlled by the config. Absent config values use OTel spec defaults.

    Args:
        config: LoggerProvider config from the parsed config file, or None.
        resource: Resource to attach to the provider.

    Returns:
        A configured LoggerProvider.
    )ra   Nzlog_record_limits are specified in config but are not supported by the Python SDK LoggerProvider constructor; limits will be ignored.)r
   limits_loggerwarning
processorsadd_log_record_processorr_   )r   ra   providerprocessor_configs       r   create_logger_providerrk      s      x000H~} T	
 	
 	

 #- 
 
))()9::	
 	
 	
 	
 Or   Nonec                H    | dS t          t          | |                     dS )uW  Configure the global LoggerProvider from declarative config.

    When config is None (logger_provider section absent from config file),
    the global is not set — matching Java/JS SDK behavior.

    Args:
        config: LoggerProvider config from the parsed config file, or None.
        resource: Resource to attach to the provider.
    N)r   rk   )r   ra   s     r   configure_logger_providerrn      s-     ~.vx@@AAAAAr   )r   r   )r   r   r   r   )r   r,   r   r   )r   r:   r   r   )r   rH   r   r	   )r   rW   r   r   )r   rZ   r   r[   r2   )r   r`   ra   rb   r   r
   )r   r`   ra   rb   r   rl   )1
__future__r   loggingopentelemetry._logsr   (opentelemetry.sdk._configuration._commonr   r   r   ,opentelemetry.sdk._configuration._exceptionsr   'opentelemetry.sdk._configuration.modelsr	   rH   r
   LoggerProviderConfigr   r:   r   rZ   r   r,   r   r   r   rW   opentelemetry.sdk._logs(opentelemetry.sdk._logs._internal.exportr   opentelemetry.sdk.resourcesr   	getLogger__name__re   rP   rR   rS   rT   r   r+   r0   r9   __annotations__rG   rV   rY   r_   rk   rn   r   r   r   <module>r|      s   # " " " " " "  3 3 3 3 3 3         
 L K K K K K                                    3 2 2 2 2 2            1 0 0 0 0 0
'
H
%
% "& !&  !$ & & & &
   @   < 0/33           <" " " "J. . . .     !%         J !%B B B B B B Br   