File: //lib/python3/dist-packages/twisted/logger/__pycache__/_file.cpython-310.pyc
o
�b! � @ s� d Z ddlmZmZmZmZ ddlmZ ddlm Z ddl
mZmZm
Z
ddlmZmZ ee�G dd � d ��Ze
fd
ee dee defd
d�ZdS )z
File log observer.
� )�IO�Any�Callable�Optional)�implementer)�ioType� )�formatEventAsClassicLogText�
formatTime�timeFormatRFC3339)�ILogObserver�LogEventc @ sJ e Zd ZdZdee deegee f ddfdd�Z
deddfd d
�ZdS )�FileLogObserverz9
Log observer that writes to a file-like object.
�outFile�formatEvent�returnNc C s* t |�tur
d| _nd| _|| _|| _dS )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.
zutf-8N)r �str� _encoding�_outFiler )�selfr r � r �6/usr/lib/python3/dist-packages/twisted/logger/_file.py�__init__ s
zFileLogObserver.__init__�eventc C sL | � |�}|r$| jdu r| j�|� n
| j�|�| j�� | j�� dS dS )zG
Write event to file.
@param event: An event.
N)r r r �write�encode�flush)r r �textr r r �__call__( s
�zFileLogObserver.__call__)�__name__�
__module__�__qualname__�__doc__r r r r
r r r r r r r r r s ��
�r r �
timeFormatr c s$ dt dtt f� fdd�}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 s t | � fdd�d�S )Nc s
t | � �S )N�r
)�e�r# r r �<lambda>J s
z:textFileLogObserver.<locals>.formatEvent.<locals>.<lambda>r$ )r )r r&