HEX
Server: Apache
System: Linux 185.122.168.184.host.secureserver.net 5.14.0-570.60.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Nov 5 05:00:59 EST 2025 x86_64
User: barbeatleanalyti (1024)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //var/opt/nydus/ops/primordial/log/__pycache__/__init__.cpython-39.pyc
a

�,�ha$�@s�ddlmZddlmZddlZddlZddlZddlZddlmZmZm	Z	m
Z
ddlmZm
Z
mZmZddlmZddlZzddlZWney�dZYn0ddlZddlmZddlmZdd	lmZdd
lmZmZmZdZ dZ!d
Z"ej#dej$dej%dej&dej'dej(dej)dej*diZ+e�,e-�Z.Gdd�dej/�Z0Gdd�dej/�Z1Gdd�dej2�Z3Gdd�de�Z4e-ddej5ej6ddfe7e7ee
e7efe7e7ee7ee7dd�dd�Z8dS) �)�datetime)�
SysLogHandlerN)�AF_INET�
SOCK_DGRAM�SOCK_STREAM�
SocketType)�Any�Dict�Optional�Tuple)�resource_stream)�iso8601_utc)�Envelope)�
ConfigLogData)�PerfLogExtra�DevLogExtra�
BALogExtrai�z@cee:z<7>z<6>z<4>z<3>z<2>z<1>csTeZdZdZejejejejd�e	e	e	e	dd��fdd�Z
eje	d�dd	�Z
�ZS)
�"VerticalServiceStructuredFormatterz�Specialized structured logging formatter for HFS vertical services.

    Takes a log record and configuration data and formats it according to the
    structure in the Envelope class, returning a json-formatted log message.
    )�log_type�log_sub_type�
datacenter�environmentN)rrrr�returncsFt�j|i|��t��tj|��tj|��tj|��tj|�|_dS�N)	�super�__init__r�setZ
TYPE_FIELDZSUB_TYPE_FIELDZDATACENTER_FIELDZENVIRONMENT_FIELD�
configLogData)�selfrrrr�args�kwargs��	__class__��H/opt/nydus/tmp/pip-target-wkfpz8uv/lib/python/primordial/log/__init__.pyr7s����z+VerticalServiceStructuredFormatter.__init__��recordrcCst�||j�}t|��Sr)rZgetEnveloper�COOKIEZgetJSON)rr'Zlogenveloper$r$r%�formatGsz)VerticalServiceStructuredFormatter.format)�__name__�
__module__�__qualname__�__doc__r�DEFAULT_TYPE�DEFAULT_SUB_TYPE�DEFAULT_DATACENTER�DEFAULT_ENVIRONMENT�strr�logging�	LogRecordr)�
__classcell__r$r$r"r%r0s��rcs*eZdZdZejed��fdd�Z�ZS)�VerticalServiceSystemdFormatterz4Systemd logging formatter for HFS vertical services.r&cst�|jd�}|t��|�S)N�)�
PREFIX_MAP�get�levelnorr))rr'�prefixr"r$r%r)Osz&VerticalServiceSystemdFormatter.format)	r*r+r,r-r3r4r2r)r5r$r$r"r%r6Lsr6c@s"eZdZdZejed�dd�ZdS)�#VerticalServiceRequestLoggingFilterz;A log filter for producing only Flask web request messages.r&cCs<tr8t��r8t|d�si|_tjj�d�}|r8||jd<dS)N�extrazx-request-id�
request_idT)�flaskZhas_request_context�hasattrr=�request�headersr9)rr'r>r$r$r%�filterWs

z*VerticalServiceRequestLoggingFilter.filterN)r*r+r,r-r3r4�boolrCr$r$r$r%r<Tsr<cs�eZdZdZddefejefee	e
e	efeedd�dd�Z
dd��fdd	�Zejdd
�dd�Zdd�d
d�Zdd�dd�Z�ZS)�HFSSyslogHandlerz�A customized Log handler for HFS syslogs.

    Given a log record, emits a log message formatted according to the
    :class:`VerticalServiceStructuredFormatter` class.
    N�	localhost)�ident�address�facility�socktypercCsV|ttfvrtd��tj�|�|p0t�d�p0d|_||_	||_
||_d|_d|_
dS)z�Produce a new HFS syslog handler.

        :param ident:
        :param address:
        :param facility:
        :raises TypeError: For socket types other than TCP or UDP
        z:HFSSyslogHandler only supports TCP and UDP AF_INET socketsZSYSLOG_IDENT�pythonNF)rr�	TypeErrorr3�Handlerr�os�getenvrGrHrIrJ�socket�
unixsocket)rrGrHrIrJr$r$r%rhszHFSSyslogHandler.__init__)rcs |jdur|��t���dS)z0Ensure socket object, as expected by base class.N)rP�_set_socketr�close�rr"r$r%rS�s
zHFSSyslogHandler.closer&c
Cs,�z|�|j|�|j��}tt�|jtj	��}t
�d�}|jdurH|jnd}d}d|t
|||j||f}d}|�|�}	|d|d}
|	d}|
�d�|�d	�}z>|jdur�|��|jtkr�|j�||j�n|j�|�Wn$t�y|j��d|_Yn0Wnt�y&|�|�Yn0dS)
z�Emit a log record.

        The record is formatted, and an RFC-compliant message is sent to the syslog server.
        No structured data segment is created and message id is always nil ('-').

        :param record: The record to be emitted.
        �HOSTNAMENr�-z<%d>%d %s %s %s %d %s� �
�ascii�utf8)�encodePriorityrI�mapPriority�	levelnamer
r�
fromtimestamp�created�pytz�utcrNrO�process�SYSLOG_FORMAT_VERSIONrGr)�encoderP�_connect_socketrJr�sendtorH�sendall�OSErrorrS�	Exception�handleError)
rr'�prio�	timestamp�hostname�pidZ
message_id�headerZstructured_data�messageZ
ascii_partZ	utf8_partZencoded_messager$r$r%�emit�s6
�
�



zHFSSyslogHandler.emitcCs0|��|j�d�|jtkr,|j�|j�dS)Ng�?)rRrP�
settimeoutrJr�connectrHrTr$r$r%re�s
z HFSSyslogHandler._connect_socketcCst�t|j�|_dSr)rPrrJrTr$r$r%rR�szHFSSyslogHandler._set_socket)r*r+r,r-�SYSLOG_DEFAULT_PORTr�LOG_USERrr
r2r�intrrrSr3r4rqrerRr5r$r$r"r%rEas�
�0rEzlogging.yaml)�name�filename�override_loggersrrrrrc	Cs�|dur|ntj}|dur"|��ntj}t�t||������}|d�	�D]2}|�
d�dkrL||d<||d<||d<||d<qL|dur�|d	�|�tj
�|�t�d
�dS)a+
    Initialize logging, updating the existing log config loggers dict with an override_loggers dict.

    It's possible, since we have many ways to run the system, that init_logging
    be called more than once.  We allow this, but warn if so.

    :param name: package name where the logging YAML config file is located
    :param filename: filename of the logging YAML config
    :param override_loggers: a dict of overrides to the default log dictconfig
    :param log_type:
    :param log_sub_type:
    :param datacenter:
    :param environment:
    N�
formattersz()z1primordial.log.VerticalServiceStructuredFormatterrrrr�loggersT)rr0�upperr1�yamlZ	safe_loadr�read�decode�valuesr9�updater3�config�
dictConfig�captureWarnings)	rwrxryrrrrr��	formatterr$r$r%�init_logging�s�
r�)9r�logging.handlersrr3�logging.configrNrPrrrr�typingrr	r
r�
pkg_resourcesrr}r?�ImportErrorr`Zprimordial.timeutilsr
Zprimordial.log.enveloperZprimordial.log.envelopedatarZprimordial.log.extrarrrrtrcr(�DEBUG�INFO�NOTSET�WARNING�WARN�ERROR�CRITICAL�FATALr8�	getLoggerr*�LOG�	Formatterrr6�Filterr<rEr.r/r2r�r$r$r$r%�<module>sd
�

d��