
    \dD                     h    d Z  ed          ZddlmZ dZej        Z G d d          ZdeedfdZ	d	S )
zo
Classes and utility functions for integrating Twisted and syslog.

You probably want to call L{startLogging}.
syslog    )logc                   @    e Zd ZdZej        Zej        ZeefdZ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                 4    |                      |||           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facilitys       5lib/python3.11/site-packages/twisted/python/syslog.py__init__zSyslogObserver.__init__#   s      	VWh/////    c                    t          j        |          }|dS t          j        }d}|d         rt          j        }d|v rt          |d                   }d|v rt          |d                   }|                    d          }|dd         dgk    r#|                                 |dd         dgk    #d	}|D ]?}|rd
}nd|z   }|                     ||z  d                    |d         |                     @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   isErrorsyslogPrioritysyslogFacility
 TF	z[{}] {}system)	r   textFromEventDictr   LOG_INFO	LOG_ALERTintsplitpopformat)r	   	eventDicttextpriorityr   lines	firstLinelines           r   emitzSyslogObserver.emit3   s;    $Y//<F ?Y 	('Hy((9%5677Hy((9%5677H 

4  BCCjRD  IIKKK BCCjRD   	 	 	D #!		d{KK8#Y%5%5i6I4%P%P   	 	r   N)
__name__
__module____qualname____doc__r   r   DEFAULT_OPTIONSDEFAULT_FACILITYr   r&    r   r   r   r      sW        	 	 nG]F'6AQ 0 0 0 0 ) ) ) ) )r   r   Twisted   c                 ^    t          | ||          }t          j        |j        |           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   startLoggingWithObserverr&   )r
   r   r   r1   obss        r   startLoggingr4   _   s3     (
3
3C Y??????r   N)
r*   
__import__r   twisted.pythonr   r+   LOG_USERr,   r   r4   r-   r   r   <module>r8      s   
  
H		       ? H H H H H H H HX o8HTU@ @ @ @ @ @r   