
    \d!	                         d Z ddlmZmZmZmZ ddlmZ ddlm	Z	 ddl
mZmZmZ ddlmZmZ  ee           G d d	                      Zefd
ee         dee         defdZdS )z
File log observer.
    )IOAnyCallableOptional)implementer)ioType   )formatEventAsClassicLogText
formatTimetimeFormatRFC3339)ILogObserverLogEventc                   `    e Zd ZdZdee         deegee	         f         ddfdZ
deddfdZdS )	FileLogObserverz9
    Log observer that writes to a file-like object.
    outFileformatEventreturnNc                 l    t          |          t          urd| _        nd| _        || _        || _        dS )z
        @param outFile: A file-like object.  Ideally one should be passed which
            accepts text data.  Otherwise, UTF-8 L{bytes} will be used.
        @param formatEvent: A callable that formats an event.
        zutf-8N)r   str	_encoding_outFiler   )selfr   r   s      4lib/python3.11/site-packages/twisted/logger/_file.py__init__zFileLogObserver.__init__   s:     '??#%%,3DNN!DN&    eventc                    |                      |          }|ro| j        | j                            |           n2| j                            |                    | j                             | j                                         dS dS )zG
        Write event to file.

        @param event: An event.
        N)r   r   r   writeencodeflush)r   r   texts      r   __call__zFileLogObserver.__call__(   s     && 	"~%##D))))##DKK$?$?@@@M!!!!!	" 	"r   )__name__
__module____qualname____doc__r   r   r   r   r   r   r   r"    r   r   r   r      s         '#w'-5xj(3-6O-P'	' ' ' ' "h "4 " " " " " "r   r   r   
timeFormatr   c                 b    dt           dt          t                   ffd}t          | |          S )a  
    Create a L{FileLogObserver} that emits text to a specified (writable)
    file-like object.

    @param outFile: A file-like object.  Ideally one should be passed which
        accepts text data.  Otherwise, UTF-8 L{bytes} will be used.
    @param timeFormat: The format to use when adding timestamp prefixes to
        logged events.  If L{None}, or for events with no C{"log_timestamp"}
        key, the default timestamp prefix of C{"-"} is used.

    @return: A file log observer.
    r   r   c                 ,    t          | fd          S )Nc                 $    t          |           S )Nr   )er(   s    r   <lambda>z:textFileLogObserver.<locals>.formatEvent.<locals>.<lambda>J   s    
1j(A(A r   r,   )r
   )r   r(   s    r   r   z(textFileLogObserver.<locals>.formatEventH   s)    *AAAA
 
 
 	
r   )r   r   r   r   )r   r(   r   s    ` r   textFileLogObserverr/   8   sE     
8 
 
 
 
 
 
 

 7K000r   N)r&   typingr   r   r   r   zope.interfacer   twisted.python.compatr   _formatr
   r   r   _interfacesr   r   r   r   r/   r'   r   r   <module>r5      s  
  / . . . . . . . . . . . & & & & & & ( ( ( ( ( ( O O O O O O O O O O / / / / / / / / \"" "" "" "" "" "" "" ""L 3D1 1W1"*3-11 1 1 1 1 1r   