File: //lib/python3/dist-packages/twisted/logger/__pycache__/_file.cpython-38.pyc
U
W[� � @ sx d Z ddlmZ ddlmZmZ ddlmZ ddlm Z ddlm
Z
ddlmZ ee�G d d
� d
e��Z
e
fdd�Zd
S )z
File log observer.
� )�implementer)�ioType�unicode� )�ILogObserver��
formatTime)�timeFormatRFC3339��formatEventAsClassicLogTextc @ s e Zd ZdZdd� Zdd� ZdS )�FileLogObserverz9
Log observer that writes to a file-like object.
c C s* t |�tk rd| _nd| _|| _|| _dS )a�
@param outFile: A file-like object. Ideally one should be passed which
accepts L{unicode} data. Otherwise, UTF-8 L{bytes} will be used.
@type outFile: L{io.IOBase}
@param formatEvent: A callable that formats an event.
@type formatEvent: L{callable} that takes an C{event} argument and
returns a formatted event as L{unicode}.
zutf-8N)r r � _encoding�_outFile�formatEvent)�self�outFiler � r �6/usr/lib/python3/dist-packages/twisted/logger/_file.py�__init__ s
zFileLogObserver.__init__c C sJ | � |�}|dkrd}| jdk r,|�| j�}|rF| j�|� | j�� dS )zd
Write event to file.
@param event: An event.
@type event: L{dict}
N� )r r
�encoder �write�flush)r �event�textr r r �__call__+ s
zFileLogObserver.__call__N)�__name__�
__module__�__qualname__�__doc__r r r r r r r s r c s � fdd�}t | |�S )aa
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 L{unicode} data. Otherwise, UTF-8 L{bytes} will be used.
@type outFile: L{io.IOBase}
@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{u"-"} is used.
@type timeFormat: L{unicode} or L{None}
@return: A file log observer.
@rtype: L{FileLogObserver}
c s t | � fdd�d�S )Nc s
t | � �S )Nr )�e��
timeFormatr r �<lambda>S � z:textFileLogObserver.<locals>.formatEvent.<locals>.<lambda>r r
)r r! r r r Q s
�z(textFileLogObserver.<locals>.formatEvent)r )r r"