o ?Og@s ddlZddlZddlZddlZddlZddlZddlZddlZddlm Z m Z m Z ddl Z ddl Z ddlZdZdZdZdZdZdZdZGd d d ejZGd d d eZGd ddeZGdddejZGdddejZGdddeZGdddejZGdddejZGdddejZ GdddejZ!GdddejZ"Gdd d e"Z#Gd!d"d"ejZ$Gd#d$d$e%Z&dS)%N)ST_DEVST_INOST_MTIMEi<#i=#i>#i?#iQc@s8eZdZ dZdZd ddZddZddZd d ZdS) BaseRotatingHandlerNFcCs0 tjj||||||d||_||_||_dS)Nmodeencodingdelayerrors)logging FileHandler__init__rr r selffilenamerr r r r7/opt/alt/python310/lib64/python3.10/logging/handlers.pyr6s  zBaseRotatingHandler.__init__cCsH z||r |tj||WdSty#||YdSwN)shouldRollover doRolloverr r emit Exception handleErrorrrecordrrrrAs  zBaseRotatingHandler.emitcCs" t|js |}|S||}|Sr)callablenamer)rZ default_nameresultrrrrotation_filenameOs   z%BaseRotatingHandler.rotation_filenamecCs< t|jstj|rt||dSdS|||dSr)rrotatorospathexistsrename)rsourcedestrrrrotatebs  zBaseRotatingHandler.rotate)NFN) __name__ __module__ __qualname__rr rrrr'rrrrr-s   rc@s,eZdZ  d ddZddZd d ZdS) RotatingFileHandlerarNFcCsF |dkrd}d|vrt|}tj||||||d||_||_dS)Nrr,br r r )io text_encodingrrmaxBytes backupCount)rrrr1r2r r r rrrr|s   zRotatingFileHandler.__init__cCs |jr |jd|_|jdkrdt|jdddD]/}|d|j|f}|d|j|df}tj|rItj|rCt |t ||q||jd}tj|r]t || |j||j sn| |_dSdS)Nrz%s.%dz.1)streamcloser2ranger baseFilenamer!r"r#remover$r'r _open)riZsfndfnrrrrs,         zRotatingFileHandler.doRollovercCs| tj|jrtj|jsdS|jdur||_|jdkreZdZ   dddZdd Zd d Zd d ZddZdS)TimedRotatingFileHandlerhr3rNFc Cst|}tj||d||| d||_||_||_||_|jdkr-d|_ d|_ d|_ nt|jdkrra)rrrcrrrrXs   z'TimedRotatingFileHandler.shouldRolloverc Cs& tj|j\}}t|}g}tj|\}}|d}t|}|D]S} |jdur1| |s0q#n| |sL| |rLt| |dkrL| |d sLq#| d||krv| |d} | d} | D]} |j | ru| tj|| nqaq#t||jkrg}|S||dt||j}|S)N.r3)r!r"splitr8listdirsplitextrBrrXendswithisdigitrWmatchappendjoinr2sort) rZdirNameZbaseNameZ fileNamesrneprefixZplenZfileNamerVpartspartrrrgetFilesToDeleteks<       z)TimedRotatingFileHandler.getFilesToDeletec Csp |jr |jd|_tt}t|d}|j|j}|jr(t|}nt|}|d}||krC|r:d}nd}t||}| |j dt |j |}t j|r]t |||j ||jdkru|D]}t |qm|js}||_||} | |kr| |j} | |ks|jdks|jdr|jst| d} || kr|sd}nd}| |7} | |_dS)Nr4rKrirtrrMrN)r5r6rZr`rkrbrUrSrjrr8strftimerVr!r"r#r9r'r2rr r:rarRrX) rrnrqrcZ timeTupleZdstThenrsr<srprrrrrrsN                z#TimedRotatingFileHandler.doRollover)rFr3rNFFNN)r(r)r*rrarrrrrrrrEs =I *rEc@s4eZdZ  d ddZddZdd Zd d ZdS) WatchedFileHandlerr,NFcCsBd|vr t|}tjj||||||dd\|_|_|dS)Nr-r)r4r4)r/r0r r rdevino _statstreamrrrrrs    zWatchedFileHandler.__init__cCs4|jrt|j}|t|t|_|_dSdSr)r5r!fstatfilenorrrrrZsresrrrrszWatchedFileHandler._statstreamcCs zt|j}Wn tyd}Ynw|r%|t|jks%|t|jkrD|jdurB|j |j d|_| |_| dSdSdSr) r!r_r8FileNotFoundErrorrrrrr5flushr6r:rrrrrreopenIfNeededs        z!WatchedFileHandler.reopenIfNeededcCs |tj||dSr)rr r rrrrrrszWatchedFileHandler.emit)r,NFN)r(r)r*rrrrrrrrrs   rc@sPeZdZ ddZdddZddZdd Zd d Zd d ZddZ ddZ dS) SocketHandlercCs\ tj|||_||_|dur||_n||f|_d|_d|_d|_d|_ d|_ d|_ dS)NFg?g>@g@) r Handlerrhostportaddresssock closeOnError retryTime retryStartretryMax retryFactorrrrrrrrs   zSocketHandler.__init__r3cCsf |jdurtj|j|d}|Sttjtj}||z ||jW|Sty2| w)Ntimeout) rsocketZcreate_connectionrAF_UNIX SOCK_STREAMZ settimeoutconnectOSErrorr6)rrrrrr makeSocket7s    zSocketHandler.makeSocketcCs t}|jdur d}n||jk}|rKz ||_d|_WdStyJ|jdur0|j|_n|j|j|_|j|jkrA|j|_||j|_YdSwdSNT) r`rrrrrZ retryPeriodrr)rZnowZattemptrrr createSocketHs$        zSocketHandler.createSocketcCsV |jdur ||jr)z |j|WdSty(|jd|_YdSwdSr)rrsendallrr6rrrrrsendds    zSocketHandler.sendcCsl |j}|r ||}t|j}||d<d|d<d|d<|ddt|d}t dt |}||S)NrDargsexc_infomessager3z>L) rr?dict__dict__Z getMessagepoppickledumpsstructZpackrB)rrZeiZdummydrZslenrrr makePicklews     zSocketHandler.makePicklecCs4 |jr|jr|jd|_dStj||dSr)rrr6r rrrrrrrs    zSocketHandler.handleErrorcCs< z ||}||WdSty||YdSwr)rrrr)rrrrrrrs  zSocketHandler.emitcCsH |z|j}|rd|_|tj|W|dS|wr)acquirerr6r rrelease)rrrrrr6szSocketHandler.closeN)r3) r(r)r*rrrrrrrr6rrrrrs  rc@s&eZdZ ddZddZddZdS)DatagramHandlercCs t|||d|_dS)NF)rrrrrrrrs zDatagramHandler.__init__cCs, |jdur tj}ntj}t|tj}|Sr)rrrZAF_INET SOCK_DGRAM)rZfamilyrrrrrs  zDatagramHandler.makeSocketcCs( |jdur ||j||jdSr)rrsendtorrrrrrs zDatagramHandler.sendN)r(r)r*rrrrrrrrs   rc @s~eZdZ dZdZdZdZdZdZdZ dZ dZ dZ dZ dZdZdZdZdZd Zd Zd Zd Zd ZdZdZdZdZdZdZdZdZdZ dZ!dZ"eeee eeee eeeed Z#idedededededed e d!ed"e d#ed$ed%ed&ed'ed(e d)ed*eeeeee e!e"d+Z$d,d-d.d/d0d1Z%d2e&fe d3fd4d5Z'd6d7Z(d8d9Z)d:d;Z*dZ,d?Z-d@dAZ.d3S)B SysLogHandlerrr3r=rdrerfrgrh ) ZalertZcritcriticaldebugZemergerrerrorinfoZnoticeZpanicwarnwarningZauthZauthprivZconsoleZcrondaemonZftpZkernZlprZmailZnewsZntpZsecurityz solaris-cronZsysloguserZuucpZlocal0)Zlocal1Zlocal2Zlocal3Zlocal4Zlocal5Zlocal6Zlocal7rrrrr)DEBUGINFOWARNINGERRORCRITICALZ localhostNc Cs* tj|||_||_||_t|tr+d|_z| |WdSt y*YdSwd|_|dur5t j }|\}}t ||d|}|sGt d|D]=}|\}}} } } d} } zt ||| } |t jkrh| | Wnt y}z|} | dur|| WYd}~qId}~ww| dur| | |_ ||_dS)NTFrz!getaddrinfo returns an empty list)r rrrfacilitysocktype isinstancestr unixsocket_connect_unixsocketrrrZ getaddrinforrr6)rrrrrrZressresZafproto_ZsarrexcrrrrPsJ      zSysLogHandler.__init__c Cs|j}|dur tj}ttj||_z |j|||_WdStyV|j|jdur0tj}ttj||_z |j|||_WYdStyU|jwwr)rrrrrrr6r)rrZ use_socktyperrrrs*        z!SysLogHandler._connect_unixsocketcCs6 t|tr |j|}t|tr|j|}|d>|BS)Nrd)rrfacility_namespriority_names)rrZpriorityrrrencodePrioritys      zSysLogHandler.encodePrioritycCs: |z|jtj|W|dS|wr)rrr6r rrrrrrr6s  zSysLogHandler.closecCs |j|dS)Nr) priority_mapget)rZ levelNamerrr mapPriorityszSysLogHandler.mapPriorityTcCs zs||}|jr|j|}|jr|d7}d||j||j}|d}|d}||}|jr[z |j |WWdSt yZ|j | |j|j |YWdSw|jt jkrl|j ||jWdS|j |WdSty||YdSw)Nz<%d>utf-8)r?ident append_nulrrrZ levelnameencoderrrrr6rrrrrrrr)rrrDZpriorrrrs6           zSysLogHandler.emit)/r(r)r*Z LOG_EMERGZ LOG_ALERTZLOG_CRITZLOG_ERRZ LOG_WARNINGZ LOG_NOTICEZLOG_INFOZ LOG_DEBUGZLOG_KERNZLOG_USERZLOG_MAILZ LOG_DAEMONZLOG_AUTHZ LOG_SYSLOGZLOG_LPRZLOG_NEWSZLOG_UUCPZLOG_CRONZ LOG_AUTHPRIVZLOG_FTPZLOG_NTPZ LOG_SECURITYZ LOG_CONSOLEZ LOG_SOLCRONZ LOG_LOCAL0Z LOG_LOCAL1Z LOG_LOCAL2Z LOG_LOCAL3Z LOG_LOCAL4Z LOG_LOCAL5Z LOG_LOCAL6Z LOG_LOCAL7rrrSYSLOG_UDP_PORTrrrr6rrrrrrrrrs       6    rc@s*eZdZ d ddZddZddZdS) SMTPHandlerN@cCs tj|t|ttfr|\|_|_n|d|_|_t|ttfr*|\|_|_ nd|_||_ t|t r8|g}||_ ||_ ||_||_dSr)r rrrlisttuplemailhostmailportusernamepasswordfromaddrrtoaddrssubjectsecurer)rrrrr credentialsrrrrrrs   zSMTPHandler.__init__cCs |jSr)rrrrr getSubjectszSMTPHandler.getSubjectcCs zpddl}ddlm}ddl}|j}|s|j}|j|j||jd}|}|j |d<d |j |d<| ||d<|j |d<||||jrf|jdur^||j|j|||j|j|||WdSty||YdSw) Nr) EmailMessagerZFrom,ZToZSubjectZDate)smtplibZ email.messagerZ email.utilsrZ SMTP_PORTZSMTPrrrr|rrZutilsrkZ set_contentr?rrZehloZstarttlsZloginrZ send_messagequitrr)rrrrZemailrZsmtprDrrrrs4      zSMTPHandler.emit)NNr)r(r)r*rrrrrrrrs  # rc@s@eZdZ dddZddZddZd d Zd d Zd dZdS)NTEventLogHandlerN Applicationc Cstj|zsddl}ddl}||_||_|s0tj |jj }tj |d}tj |dd}||_ ||_ z |j|||Wnty[}zt|dddkrQWYd}~nd}~ww|j|_tj|jtj|jtj|jtj|jtj|ji|_WdStytdd|_YdSw)Nrzwin32service.pydZwinerrorrfzWThe Python Win32 extensions for NT (service, event logging) appear not to be available.)r rrwin32evtlogutil win32evtlogappname_welur!r"ru__file__r|dllnamelogtypeZAddSourceToRegistryrgetattrZEVENTLOG_ERROR_TYPEdeftyperZEVENTLOG_INFORMATION_TYPErrZEVENTLOG_WARNING_TYPErrtypemap ImportErrorprint)rrr r rrrrrrrAs<    zNTEventLogHandler.__init__cC dS)Nr3rrrrr getMessageIDdzNTEventLogHandler.getMessageIDcCr)NrrrrrrgetEventCategorynsz"NTEventLogHandler.getEventCategorycCs |j|j|jSr)r rlevelnor rrrr getEventTypews zNTEventLogHandler.getEventTypecCsr |jr7z#||}||}||}||}|j|j||||gWdSty6||YdSwdSr) rrrrr?Z ReportEventrrr)rridcattyperDrrrrs     zNTEventLogHandler.emitcCs tj|dSr)r rr6rrrrr6s zNTEventLogHandler.close)Nr) r(r)r*rrrrrr6rrrrr7s #   rc@s4eZdZ  d ddZddZdd Zd d ZdS) HTTPHandlerGETFNcCsb tj||}|dvrtd|s|durtd||_||_||_||_||_ ||_ dS)N)rPOSTzmethod must be GET or POSTz3context parameter only makes sense with secure=True) r rrrQrYrurlmethodrrcontext)rrrrrrrrrrrs   zHTTPHandler.__init__cCs |jSr)rrrrr mapLogRecordszHTTPHandler.mapLogRecordcCs4 ddl}|r|jj||jd}|S|j|}|S)Nr)r)Z http.clientZclientZHTTPSConnectionrZHTTPConnection)rrrZhttpZ connectionrrr getConnections zHTTPHandler.getConnectionc CsP zddl}|j}|||j}|j}|j||}|jdkr5| ddkr+d}nd}|d||f}| |j|| d}|dkrK|d|}|jdkr`| dd | d t t ||jrddl} d |jd } d | | d} | d| ||jdkr||d |WdSty||YdSw)Nrr?&z%c%s:rz Content-typez!application/x-www-form-urlencodedzContent-lengthz%s:%srzBasic asciiZ Authorization)Z urllib.parserr rrparseZ urlencoderrfindZ putrequestZ putheaderrrBrbase64rZ b64encodestripdecodeZ endheadersrZ getresponserr) rrZurllibrrFrdatasepr;r'rrrrrsB       zHTTPHandler.emit)rFNN)r(r)r*rrr rrrrrrs  rc@s6eZdZ ddZddZddZddZd d Zd S) BufferingHandlercCs tj|||_g|_dSr)r rrcapacitybuffer)rr-rrrrs  zBufferingHandler.__init__cCs t|j|jkSr)rBr.r-rrrr shouldFlush szBufferingHandler.shouldFlushcCs( |j|||r|dSdSr)r.r{r/rrrrrrs    zBufferingHandler.emitcCs. |z |jW|dS|wr)rr.clearrrrrrrs  zBufferingHandler.flushc Cs, z |Wtj|dStj|wr)rr rr6rrrrr6*s zBufferingHandler.closeN)r(r)r*rr/rrr6rrrrr,s  r,c@s@eZdZ ejddfddZddZddZd d Zd d Z dS) MemoryHandlerNTcCs$ t||||_||_||_dSr)r,r flushLeveltarget flushOnClose)rr-r2r3r4rrrr;s   zMemoryHandler.__init__cCs t|j|jkp|j|jkSr)rBr.r-rr2rrrrr/Os zMemoryHandler.shouldFlushcCs* |z ||_W|dS|wr)rr3r)rr3rrr setTargetVs zMemoryHandler.setTargetcCsZ |z"|jr!|jD]}|j|q |jW|dSW|dS|wr)rr3r.handler0rrrrrr`s   zMemoryHandler.flushcCsv z!|jr |W|zd|_t|W|dS|w|zd|_t|W|w|wr)r4rrr3r,r6rrrrrr6qs  zMemoryHandler.close) r(r)r*r rrr/r5rr6rrrrr15s  r1c@s.eZdZ ddZddZddZddZd S) QueueHandlercCs tj|||_dSr)r rrqueue)rr8rrrrs  zQueueHandler.__init__cCs |j|dSr)r8 put_nowaitrrrrenqueueszQueueHandler.enqueuecCs> ||}t|}||_||_d|_d|_d|_d|_|Sr)r?copyrrDrrZexc_textZ stack_inforCrrrprepares  zQueueHandler.preparecCs8 z |||WdSty||YdSwr)r:r<rrrrrrrs  zQueueHandler.emitN)r(r)r*rr:r<rrrrrr7s   r7c@sXeZdZ dZddddZddZdd Zd d Zd d ZddZ ddZ ddZ dS) QueueListenerNF)respect_handler_levelcGs ||_||_d|_||_dSr)r8handlers_threadr>)rr8r>r?rrrrs  zQueueListener.__init__cCs |j|Sr)r8r)rblockrrrdequeues zQueueListener.dequeuecCs( tj|jd|_}d|_|dS)N)r3T) threadingZThread_monitorr@rstart)rrcrrrrEs zQueueListener.startcCs |Srrrrrrr<rzQueueListener.preparecCsB ||}|jD]}|jsd}n|j|jk}|r||q dSr)r<r?r>rlevelr6)rrZhandlerZprocessrrrr6s    zQueueListener.handlecCsn |j}t|d} z |d}||jur|r|WdS|||r)|Wn tjy5YdSwq )N task_doneT)r8hasattrrB _sentinelrGr6ZEmpty)rqZ has_task_donerrrrrDs$    zQueueListener._monitorcCs |j|jdSr)r8r9rIrrrrenqueue_sentinelszQueueListener.enqueue_sentinelcCs ||jd|_dSr)rKr@r|rrrrstop)s  zQueueListener.stop) r(r)r*rIrrBrEr<r6rDrKrLrrrrr=s     r=)'r/r rr!rrr`r\r_rrrr8rCr;ZDEFAULT_TCP_LOGGING_PORTZDEFAULT_UDP_LOGGING_PORTZDEFAULT_HTTP_LOGGING_PORTZDEFAULT_SOAP_LOGGING_PORTrZSYSLOG_TCP_PORTrlr rr+rErrrrrrrrr,r1r7objectr=rrrrs>@ JS~J(*PkZ9MF