Ϫf dZddlmZmZddlmZddlmZddlm Z m Z ddl m Z dZ ee Gd d Zee d e d d fdZy )z Basic log observers. )CallableOptional) implementer)Failure) ILogObserverLogEvent)LoggerzITemporarily disabling observer {observer} due to exception: {log_failure}c`eZdZdZdeddfdZdeddfdZdeddfdZd eddfd Z dede fd Z y) LogPublisherz I{ILogObserver} that fans out events to other observers. Keeps track of a set of L{ILogObserver} objects and forwards events to each. observersreturnNcFt||_t||_y)Nobserver)list _observersr log)selfr s :/usr/lib/python3/dist-packages/twisted/logger/_observer.py__init__zLogPublisher.__init__sy/4(rct|std|||jvr|jj|yy)zq Registers an observer with this publisher. @param observer: An L{ILogObserver} to add. zObserver is not callable: N)callable TypeErrorrappendrrs r addObserverzLogPublisher.addObserver#sB !8 EF F 4?? * OO " "8 , +rcZ |jj|y#t$rYywxYw)zv Unregisters an observer with this publisher. @param observer: An L{ILogObserver} to remove. N)rremove ValueErrorrs rremoveObserverzLogPublisher.removeObserver.s+   OO " "8 ,   s  **eventc:dvrd}ndtddffd }g}jD]}||| ||D].\}}j |}|j t||0y#t$r|j|t fYrwxYw)z8 Forward events to contained observers. log_traceNrrc2dj|fy)z Add tracing information for an observer. @param observer: an observer being forwarded to r%N)r)rr#rs rtracez$LogPublisher.__call__..traceBs k"))4*:;r)failurer)rr Exceptionrr_errorLoggerForObserverr(OBSERVER_DISABLED)rr#r'brokenObserversrbrokenObserverr( errorLoggers`` r__call__zLogPublisher.__call__9s e #>BE <  < < >H h >  >(7  #NG66~FK   !'    >&&')'<= >sA33$BBcRtfd|jD}t|S)z Create an error-logger based on this logger, which does not contain the given bad observer. @param observer: The observer which previously had an error. @return: A L{Logger} without the given observer. c3,K|] }|us| yw)N).0obsrs r z7LogPublisher._errorLoggerForObserver..gs Dc80Cc Ds r)r rr )rrerrorPublishers ` rr*z$LogPublisher._errorLoggerForObserver]s(& DT__ D ~..r) __name__ __module__ __qualname____doc__rrrr"r r/r r*r2rrr r sg)<)D) -L -T - |  "h"4"H / / /rr r#rNcy)zD I{ILogObserver} that does nothing with the events it sees. Nr2)r#s rbitbucketLogObserverr<lsr)r:typingrrzope.interfacertwisted.python.failurer _interfacesrr _loggerr r+r r<r2rrrBso &&*/P  \R/R/R/j \Tr