
    uYfJ                     j    d dl Z d dlmZ d dlZd dlmZ dj                  d      ZdZd Z	d Z
d	 Zd
 Zy)    N)RotatingFileHandler)asboolzN%(asctime)s %(levelname)s [%(name)s] [%(filename)s:%(lineno)d] {}- %(message)sz~[dd.service=%(dd.service)s dd.env=%(dd.env)s dd.version=%(dd.version)s dd.trace_id=%(dd.trace_id)s dd.span_id=%(dd.span_id)s] i   c                      t        j                  d      } t        t        j                  j                  dd            r#| j                  t        j                                t        |        t        |        y)av  Configures ddtrace log levels and file paths.

    Customization is possible with the environment variables:
        ``DD_TRACE_DEBUG``, ``DD_TRACE_LOG_FILE_LEVEL``, and ``DD_TRACE_LOG_FILE``

    By default, when none of the settings have been changed, ddtrace loggers
        inherit from the root logger in the logging module and no logs are written to a file.

    When DD_TRACE_DEBUG has been enabled:
        - Logs are propagated up so that they appear in the application logs if a file path wasn't provided
        - Logs are routed to a file when DD_TRACE_LOG_FILE is specified, using the log level in DD_TRACE_LOG_FILE_LEVEL.
        - Child loggers inherit from the parent ddtrace logger

    Note(s):
        1) The ddtrace-run logs under commands/ddtrace_run do not follow DD_TRACE_LOG_FILE if DD_TRACE_DEBUG is enabled.
            This is because ddtrace-run calls ``logging.basicConfig()`` when DD_TRACE_DEBUG is enabled, so
            this configuration is not applied.
        2) Python 2: If the application is using DD_TRACE_DEBUG=true, logging will need to be configured,
            ie: ``logging.basicConfig()``.

    ddtraceDD_TRACE_LOG_STREAM_HANDLERtrueN)
logging	getLoggerr   osenvironget
addHandlerStreamHandler_configure_ddtrace_debug_logger_configure_ddtrace_file_logger)ddtrace_loggers    O/var/www/highfloat_scraper/venv/lib/python3.12/site-packages/ddtrace/_logger.pyconfigure_ddtrace_loggerr      sS    . &&y1Nbjjnn:FCD!!'"7"7"9:#N3">2    c                     t        t        j                  j                  dd            r1| j	                  t
        j                         | j                  d       y y )NDD_TRACE_DEBUGfalsez2debug mode has been enabled for the ddtrace logger)r   r   r   r   setLevelr	   DEBUGdebug)loggers    r   r   r   /   s<    bjjnn-w78&IJ 9r   c                 j   t         j                  j                  dd      j                         }	 t	        t
        |      }t         j                  j                  d      }|t         j                  j                  |      }t        t         j                  j                  dt                    }d}t        |d||      }d	}t        j                  |      }|j                  |       |j                  |       | j!                  |       | j#                  d
|       y y # t        $ r t        d|      w xY w)NDD_TRACE_LOG_FILE_LEVELr   zXDD_TRACE_LOG_FILE_LEVEL is invalid. Log level must be CRITICAL/ERROR/WARNING/INFO/DEBUG.DD_TRACE_LOG_FILEDD_TRACE_LOG_FILE_SIZE_BYTES   a)filenamemodemaxBytesbackupCountzL%(asctime)s %(levelname)s [%(name)s] [%(filename)s:%(lineno)d] - %(message)sz!ddtrace logs will be routed to %s)r   r   r   uppergetattrr	   AttributeError
ValueErrorpathabspathintDEFAULT_FILE_SIZE_BYTESr   	Formatterr   setFormatterr   r   )	r   log_file_levelfile_log_level_valuelog_pathmax_file_bytes
num_backupddtrace_file_handler
log_formatlog_formatters	            r   r   r   5   s   ZZ^^$=wGMMON
&w? zz~~12H77??8,RZZ^^,JLcde
2C.j 
 d
))*5%%&:;))-8./8(C   
f
 	

s   D D2c                      ddl m}   | d       t        j                  d      }|j                  D ]*  }|j                  t        j                  t                     , y)zW
    Ensures that logging is patched before we inject trace information into logs.
    r   )patchT)r	   r   N)r   r:   r	   r
   handlersr0   r/   DD_LOG_FORMAT)r:   r   handlers      r   _configure_log_injectionr>   O   sM     	$&&y1N!** ?W..}=>?r   )r	   logging.handlersr   r   ddtrace.internal.utils.formatsr   formatr<   r.   r   r   r   r>    r   r   <module>rC      sG     0 	 1 agg?
 # 3>KD4	?r   