File: //usr/lib/python3/dist-packages/twisted/logger/__pycache__/_observer.cpython-38.pyc
U
�b� � @ s~ d Z ddlmZmZ ddlmZ ddlmZ ddlm Z m
Z
ddlmZ dZ
ee �G d d
� d
��Zee �e
dd�d
d��ZdS )z
Basic log observers.
� )�Callable�Optional)�implementer)�Failure� )�ILogObserver�LogEvent)�LoggerzITemporarily disabling observer {observer} due to exception: {log_failure}c @ s` e Zd ZdZedd�dd�Zedd�dd�Zedd�d d
�Zedd�dd
�Z ee
d�dd�ZdS )�LogPublisherz�
I{ILogObserver} that fans out events to other observers.
Keeps track of a set of L{ILogObserver} objects and forwards
events to each.
N)� observers�returnc G s t |�| _t| d�| _d S )N��observer)�list�
_observersr �log)�selfr � r �:/usr/lib/python3/dist-packages/twisted/logger/_observer.py�__init__ s
zLogPublisher.__init__�r r c C s0 t |�std|����|| jkr,| j�|� dS )zq
Registers an observer with this publisher.
@param observer: An L{ILogObserver} to add.
zObserver is not callable: N)�callable� TypeErrorr �append�r r r r r �addObserver# s
zLogPublisher.addObserverc C s* z| j �|� W n tk
r$ Y nX dS )zv
Unregisters an observer with this publisher.
@param observer: An L{ILogObserver} to remove.
N)r �remove�
ValueErrorr r r r �removeObserver. s zLogPublisher.removeObserver��eventr c s� d� krd}nt dd�� �fdd�}g }�jD ]F}|dk rB||� z|� � W q. tk
rr |�|t� f� Y q.X q.|D ]"\}}��|�}|jt||d� qzdS )z8
Forward events to contained observers.
� log_traceNr c s � d � �| f� dS )z�
Add tracing information for an observer.
@param observer: an observer being forwarded to
r! N)r r
�r r r r �traceB s z$LogPublisher.__call__.<locals>.trace)�failurer )r r � Exceptionr r �_errorLoggerForObserverr$ �OBSERVER_DISABLED)r r r# ZbrokenObserversr ZbrokenObserverr$ ZerrorLoggerr r"