U
    2ÜŸjD  ã                   @   sF   d Z edƒZddlmZ dZejZG dd„ dƒZdeedfdd	„Z	d
S )zo
Classes and utility functions for integrating Twisted and syslog.

You probably want to call L{startLogging}.
Úsyslogé    )Úlogc                   @   s2   e Zd ZdZejZejZeefdd„Zdd„ Z	dS )ÚSyslogObserveraU  
    A log observer for logging to syslog.

    See L{twisted.python.log} for context.

    This logObserver will automatically use LOG_ALERT priority for logged
    failures (such as from C{log.err()}), but you can use any priority and
    facility by setting the 'C{syslogPriority}' and 'C{syslogFacility}' keys in
    the event dict.
    c                 C   s   |   |||¡ dS )aß  
        @type prefix: C{str}
        @param prefix: The syslog prefix to use.

        @type options: C{int}
        @param options: A bitvector represented as an integer of the syslog
            options to use.

        @type facility: C{int}
        @param facility: An indication to the syslog daemon of what sort of
            program this is (essentially, an additional arbitrary metadata
            classification for messages sent to syslog by this observer).
        N)Úopenlog)ÚselfÚprefixÚoptionsÚfacility© r
   ú9/tmp/pip-unpacked-wheel-4b529toj/twisted/python/syslog.pyÚ__init__#   s    zSyslogObserver.__init__c                 C   s¼   t  |¡}|dkrdS tj}d}|d r.tj}d|krBt|d ƒ}d|krVt|d ƒ}| d¡}|dd… dgkr|| ¡  q`d	}|D ]2}|r’d
}nd| }|  ||B d |d |¡¡ q„dS )a†  
        Send a message event to the I{syslog}.

        @param eventDict: The event to send.  If it has no C{'message'} key, it
            will be ignored.  Otherwise, if it has C{'syslogPriority'} and/or
            C{'syslogFacility'} keys, these will be used as the syslog priority
            and facility.  If it has no C{'syslogPriority'} key but a true
            value for the C{'isError'} key, the B{LOG_ALERT} priority will be
            used; if it has a false value for C{'isError'}, B{LOG_INFO} will be
            used.  If the C{'message'} key is multiline, each line will be sent
            to the syslog separately.
        Nr   ZisErrorZsyslogPriorityZsyslogFacilityÚ
éÿÿÿÿÚ TFú	z[{}] {}Úsystem)	r   ZtextFromEventDictr   ÚLOG_INFOÚ	LOG_ALERTÚintÚsplitÚpopÚformat)r   Z	eventDictÚtextÚpriorityr	   ÚlinesZ	firstLineÚliner
   r
   r   Úemit3   s.    


 ÿzSyslogObserver.emitN)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   ÚDEFAULT_OPTIONSÚDEFAULT_FACILITYr   r   r
   r
   r
   r   r      s
   r   ZTwistedé   c                 C   s    t | ||ƒ}tj|j|d� dS )a  
    Send all Twisted logging output to syslog from now on.

    The prefix, options and facility arguments are passed to
    C{syslog.openlog()}, see the Python syslog documentation for details. For
    other parameters, see L{twisted.python.log.startLoggingWithObserver}.
    )Ú	setStdoutN)r   r   ZstartLoggingWithObserverr   )r   r   r	   r$   Zobsr
   r
   r   ÚstartLogging_   s    
r%   N)
r    Ú
__import__r   Ztwisted.pythonr   r!   ÚLOG_USERr"   r   r%   r
   r
   r
   r   Ú<module>   s   L   ÿ