a DOg@svddlZddlZddlZddlZddlZddlZddlZddlmZm Z m Z ddl Z ddl Z ddl Z dZdZdZdZdZdZdZGd d d ejZGd d d eZGd ddeZGdddejZGdddejZGdddeZGdddejZGdddejZGdddejZGdddejZ GdddejZ!Gdd d e!Z"Gd!d"d"ejZ#Gd#d$d$e$Z%dS)%N)ST_DEVST_INOST_MTIMEi<#i=#i>#i?#iQc@s6eZdZdZdZd ddZddZddZd d ZdS) BaseRotatingHandlerNFcCs.tjj||||||d||_||_||_dS)Nmodeencodingdelayerrors)logging FileHandler__init__rr r selffilenamerr r r r(/usr/lib64/python3.9/logging/handlers.pyr6s zBaseRotatingHandler.__init__cCsFz$||r|tj||Wnty@||Yn0dSN)shouldRollover doRolloverr r emit Exception handleErrorrrecordrrrrAs   zBaseRotatingHandler.emitcCst|js|}n ||}|Sr)callablenamer)rZ default_nameresultrrrrotation_filenameOs  z%BaseRotatingHandler.rotation_filenamecCs4t|js$tj|r0t||n |||dSr)rrotatorospathexistsrename)rsourcedestrrrrotatebs  zBaseRotatingHandler.rotate)NFN) __name__ __module__ __qualname__rr rrrr'rrrrr-s  rc@s&eZdZd ddZddZd d ZdS) RotatingFileHandlerarNFcCs2|dkr d}tj||||||d||_||_dS)Nrr,r r r )rrmaxBytes backupCount)rrrr.r/r r r rrrr|s zRotatingFileHandler.__init__cCs|jr|jd|_|jdkrt|jdddD]^}|d|j|f}|d|j|df}tj|r2tj|rt |t ||q2||jd}tj|rt || |j||j s| |_dS)Nrz%s.%dz.1)streamcloser/ranger baseFilenamer!r"r#remover$r'r _open)riZsfndfnrrrrs&        zRotatingFileHandler.doRollovercCsztj|jr tj|js dS|jdur4||_|jdkrvd||}|j dd|j t ||jkrvdSdS)NFrz%s T) r!r"r#r5isfiler2r7r.formatseektelllenrrmsgrrrrs   z"RotatingFileHandler.shouldRollover)r,rrNFN)r(r)r*rrrrrrrr+ws  "r+c@s6eZdZdddZdd Zd d Zd d ZddZdS)TimedRotatingFileHandlerhr0rNFc Cstj||d||| d||_||_||_||_|jdkrPd|_d|_d|_ n|jdkrnd|_d |_d |_ n|jd krd |_d |_d|_ n|jdks|jdkrd|_d|_d|_ n|j dr0d|_t |jdkrt d|j|jddks|jddkrt d|jt |jd|_d|_d|_ nt d|jt|j tj|_ |j||_|j}tj|rt|t} n t t} || |_dS)Nr,r-Sr0z%Y-%m-%d_%H-%M-%Sz-^\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2}(\.\w+)?$M<z%Y-%m-%d_%H-%Mz'^\d{4}-\d{2}-\d{2}_\d{2}-\d{2}(\.\w+)?$Hz %Y-%m-%d_%Hz!^\d{4}-\d{2}-\d{2}_\d{2}(\.\w+)?$DMIDNIGHTrz%Y-%m-%dz^\d{4}-\d{2}-\d{2}(\.\w+)?$Wi: r:zHYou must specify a day for weekly rollover from 0 to 6 (0 is Monday): %s06z-Invalid day specified for weekly rollover: %sz'Invalid rollover interval specified: %s)rrupperwhenr/utcatTimeintervalsuffixextMatch startswithr? ValueErrorint dayOfWeekrecompileASCIIr5r!r"r#statrtimecomputeRollover rolloverAt) rrrOrRr/r r rPrQr trrrrsP        z!TimedRotatingFileHandler.__init__cCsd||j}|jdks"|jdr`|jr4t|}n t|}|d}|d}|d}|d}|jdurnt}n |jj d|jj d|jj }||d|d|} | dkr| t7} |d d }|| }|jdr`|} | |j kr`| |j kr|j | } nd| |j d } || d } |js\|d } t| d }| |kr\| sPd }nd}| |7} | }|S)NrJrKrFrr0rr1rH) rRrOrUrPr]gmtime localtimerQ _MIDNIGHTZhourZminutesecondrX)r currentTimerr`Z currentHourZ currentMinuteZ currentSecondZ currentDayZ rotate_tsrZdayZ daysToWait newRolloverAtdstNow dstAtRolloveraddendrrrr^ sL          z(TimedRotatingFileHandler.computeRollovercCs>tj|jr tj|js dStt}||jkr:dSdS)NFT)r!r"r#r5r;rWr]r_)rrr`rrrrUs   z'TimedRotatingFileHandler.shouldRolloverc Cs$tj|j\}}t|}g}tj|\}}|d}t|}|D]} |jdur`| |sqDn6| |s| |rt| |dkr| |d sqD| d||krD| |d} | d} | D](} |j | r| tj|| qDqqDt||jkrg}n||dt||j}|S)N.r0)r!r"splitr5listdirsplitextr?rrUendswithisdigitrTmatchappendjoinr/sort) rZdirNameZbaseNameZ fileNamesrneprefixplenZfileNamerSpartspartrrrgetFilesToDeleteds8      z)TimedRotatingFileHandler.getFilesToDeletec Csv|jr|jd|_tt}t|d}|j|j}|jrNt|}n6t|}|d}||kr|rrd}nd}t||}| |j dt |j |}t j|rt |||j ||jdkr|D]}t |q|js||_||} | |kr| |j} q|jdks4|jdrl|jslt| d} || krl|s`d}nd}| |7} | |_dS)Nr1rHrfrqrrJrK)r2r3rWr]rhr_rRrPrgrr5strftimerSr!r"r#r6r'r/rr r7r^rOrU) rrkrnr`Z timeTupleZdstThenrpr9srmrorrrrsJ               " z#TimedRotatingFileHandler.doRollover)rCr0rNFFNN)r(r)r*rr^rrrrrrrrBs <I*rBc@s.eZdZd ddZddZdd Zd d ZdS) WatchedFileHandlerr,NFcCs0tjj||||||dd\|_|_|dS)Nr)r1r1)r r rdevino _statstreamrrrrrs   zWatchedFileHandler.__init__cCs0|jr,t|j}|t|t|_|_dSr)r2r!fstatfilenorrrrrZsresrrrrszWatchedFileHandler._statstreamcCszt|j}Wnty&d}Yn0|rH|t|jksH|t|jkr~|jdur~|j |j d|_| |_| dSr) r!r\r5FileNotFoundErrorrrrrr2flushr3r7rrrrrreopenIfNeededs        z!WatchedFileHandler.reopenIfNeededcCs|tj||dSr)rr r rrrrrrszWatchedFileHandler.emit)r,NFN)r(r)r*rrrrrrrrrs  rc@sNeZdZddZdddZddZdd Zd d Zd d ZddZ ddZ dS) SocketHandlercCsZtj|||_||_|dur(||_n ||f|_d|_d|_d|_d|_ d|_ d|_ dS)NFg?g>@g@) r Handlerrhostportaddresssock closeOnError retryTime retryStartretryMax retryFactorrrrrrrrs  zSocketHandler.__init__r0cCsh|jdurtj|j|d}nHttjtj}||z||jWntyb| Yn0|S)Ntimeout) rsocketcreate_connectionrAF_UNIX SOCK_STREAM settimeoutconnectOSErrorr3)rrrrrr makeSocket.s   zSocketHandler.makeSocketcCst}|jdurd}n ||jk}|rz||_d|_WnTty|jdur\|j|_n"|j|j|_|j|jkr~|j|_||j|_Yn0dSNT) r]rrrrrZ retryPeriodrr)rZnowZattemptrrr createSocket?s        zSocketHandler.createSocketcCsP|jdur||jrLz|j|Wn"tyJ|jd|_Yn0dSr)rrsendallrr3rrrrrsend[s   zSocketHandler.sendcCsj|j}|r||}t|j}||d<d|d<d|d<|ddt|d}t dt |}||S)NrAargsexc_infomessager0z>L) rr<dict__dict__ getMessagepoppickledumpsstructpackr?)rreidummydrZslenrrr makePicklens     zSocketHandler.makePicklecCs0|jr|jr|jd|_ntj||dSr)rrr3r rrrrrrrs  zSocketHandler.handleErrorcCs:z||}||Wnty4||Yn0dSr)rrrr)rrrrrrrs   zSocketHandler.emitcCsH|z0|j}|r"d|_|tj|W|n |0dSr)acquirerr3r rrelease)rrrrrr3szSocketHandler.closeN)r0) r(r)r*rrrrrrrr3rrrrrs  rc@s$eZdZddZddZddZdS)DatagramHandlercCst|||d|_dS)NF)rrrrrrrrszDatagramHandler.__init__cCs*|jdurtj}ntj}t|tj}|Sr)rrrAF_INET SOCK_DGRAM)rfamilyrrrrrs  zDatagramHandler.makeSocketcCs&|jdur||j||jdSr)rrsendtorrrrrrs zDatagramHandler.sendN)r(r)r*rrrrrrrrs  rc@s4eZdZdZdZdZdZdZdZdZ dZ dZ dZ dZ dZdZdZdZdZd Zd Zd Zd Zd ZdZdZdZdZdZdZdZdZdZ dZ!dZ"eeee eeee eeeed Z#eeeeeee ee eeeeee eeeeeee e!e"dZ$dddddd Z%d!e&fe d"fd#d$Z'd%d&Z(d'd(Z)d)d*Z*d+d,Z+d-Z,d.Z-d/d0Z.d"S)1 SysLogHandlerrr0r:rarbrcrdre ) ZalertZcritcriticaldebugZemergerrerrorinfoZnoticeZpanicwarnwarning)ZauthZauthprivZconsoleZcrondaemonftpZkernZlprZmailnewsZntpZsecurityz solaris-cronZsysloguserZuucpZlocal0Zlocal1Zlocal2Zlocal3Zlocal4Zlocal5Zlocal6Zlocal7rrrrr)DEBUGINFOWARNINGERRORCRITICAL localhostNc Cs2tj|||_||_||_t|trRd|_z| |Wnt yNYn0nd|_|durft j }|\}}t ||d|}|st d|D]}|\}}} } } d} } z.t ||| } |t jkr| | WqWqt y}z |} | dur| WYd}~qd}~00q| dur"| | |_ ||_dS)NTFrz!getaddrinfo returns an empty list)r rrrfacilitysocktype isinstancestr unixsocket_connect_unixsocketrrr getaddrinforrr3)rrrrrrZressresafproto_sarrexcrrrrGsB        zSysLogHandler.__init__c Cs|j}|durtj}ttj||_z|j|||_Wntty|j|jdur^tj}ttj||_z|j|||_Wnty|jYn0Yn0dSr)rrrrrrr3r)rrZ use_socktyperrrr}s&         z!SysLogHandler._connect_unixsocketcCs4t|tr|j|}t|tr(|j|}|d>|BS)Nra)rrfacility_namespriority_names)rrpriorityrrrencodePrioritys     zSysLogHandler.encodePrioritycCs:|z"|jtj|W|n |0dSr)rrr3r rrrrrrr3s  zSysLogHandler.closecCs|j|dS)Nr) priority_mapget)r levelNamerrr mapPriorityszSysLogHandler.mapPriorityTcCsz||}|jr|j|}|jr*|d7}d||j||j}|d}|d}||}|jrz|j |Wqt y|j | |j|j |Yq0n*|jt jkr|j ||jn |j |Wnty||Yn0dS)Nz<%d>utf-8)r<ident append_nulrrr levelnameencoderrrrr3rrrrrrrr)rrrAZpriorrrrs0           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_PORTrrrr3rrrrrrrrrs  6   rc@s&eZdZd ddZddZddZdS) SMTPHandlerN@cCstj|t|ttfr(|\|_|_n|d|_|_t|ttfrR|\|_|_ nd|_||_ t|t rn|g}||_ ||_ ||_||_dSr)r rrrlisttuplemailhostmailportusernamepasswordfromaddrrtoaddrssubjectsecurer)rrrrr  credentialsr rrrrrs  zSMTPHandler.__init__cCs|jSr)r rrrr getSubjectszSMTPHandler.getSubjectcCszddl}ddlm}ddl}|j}|s.|j}|j|j||jd}|}|j |d<d |j |d<| ||d<|j |d<||||jr|jdur||j|j|||j|j|||Wnty||Yn0dS) Nr) EmailMessagerZFrom,ZToZSubjectZDate)smtplibZ email.messager Z email.utilsrZ SMTP_PORTZSMTPrrrryrr ZutilsrhZ set_contentr<rr ZehloZstarttlsZloginrZ send_messagequitrr)rrrr ZemailrZsmtprArrrrs0       zSMTPHandler.emit)NNr)r(r)r*rr rrrrrrs # rc@s>eZdZdddZddZddZd d Zd d Zd dZdS)NTEventLogHandlerN Applicationc Cstj|zddl}ddl}||_||_|s`tj |jj }tj |d}tj |dd}||_ ||_ |j||||j|_tj|jtj|jtj|jtj|jtj|ji|_Wn tytdd|_Yn0dS)Nrzwin32service.pydzWThe Python Win32 extensions for NT (service, event logging) appear not to be available.)r rrwin32evtlogutil win32evtlogappname_welur!r"rr__file__rydllnamelogtypeZAddSourceToRegistryZEVENTLOG_ERROR_TYPEdeftyperZEVENTLOG_INFORMATION_TYPErrZEVENTLOG_WARNING_TYPErrtypemap ImportErrorprint)rrrrrrrrrr8s,   zNTEventLogHandler.__init__cCsdS)Nr0rrrrr getMessageIDRszNTEventLogHandler.getMessageIDcCsdS)NrrrrrrgetEventCategory\sz"NTEventLogHandler.getEventCategorycCs|j|j|jSr)rrlevelnorrrrr getEventTypees zNTEventLogHandler.getEventTypecCsl|jrhzD||}||}||}||}|j|j||||gWntyf||Yn0dSr) rrrr!r<Z ReportEventrrr)rridcattyperArrrrrs     zNTEventLogHandler.emitcCstj|dSr)r rr3rrrrr3s zNTEventLogHandler.close)Nr) r(r)r*rrrr!rr3rrrrr.s     rc@s.eZdZd ddZddZdd Zd d ZdS) HTTPHandlerGETFNcCs`tj||}|dvr$td|s8|dur8td||_||_||_||_||_ ||_ dS)N)r&POSTzmethod must be GET or POSTz3context parameter only makes sense with secure=True) r rrrNrVrurlmethodr r context)rrr(r)r r r*rrrrs  zHTTPHandler.__init__cCs|jSr)rrrrr mapLogRecordszHTTPHandler.mapLogRecordcCs0ddl}|r |jj||jd}n |j|}|S)Nr)r*)Z http.clientclientZHTTPSConnectionr*ZHTTPConnection)rrr http connectionrrr getConnections  zHTTPHandler.getConnectionc CsVz0ddl}|j}|||j}|j}|j||}|jdkrj| ddkrVd}nd}|d||f}| |j|| d}|dkr|d|}|jdkr| dd | d t t ||jrddl} d |jd } d | | d} | d| ||jdkr(||d |WntyP||Yn0dS)Nrr&?&z%c%s:r'z Content-typez!application/x-www-form-urlencodedzContent-lengthz%s:%srzBasic asciiZ Authorization) urllib.parserr/r r(parse urlencoder+r)findZ putrequestZ putheaderrr?r base64rZ b64encodestripdecodeZ endheadersrZ getresponserr) rrurllibrrCr(datasepr8r8rrrrrs>       zHTTPHandler.emit)r&FNN)r(r)r*rr+r/rrrrrr%s  r%c@s4eZdZddZddZddZddZd d Zd S) BufferingHandlercCstj|||_g|_dSr)r rrcapacitybuffer)rr?rrrrs zBufferingHandler.__init__cCst|j|jkSr)r?r@r?rrrr shouldFlushszBufferingHandler.shouldFlushcCs"|j|||r|dSr)r@rxrArrrrrrs  zBufferingHandler.emitcCs.|z|jW|n |0dSr)rr@clearrrrrrr s zBufferingHandler.flushc Cs,z|Wtj|ntj|0dSr)rr rr3rrrrr3s zBufferingHandler.closeN)r(r)r*rrArrr3rrrrr>s    r>c@s>eZdZejddfddZddZddZd d Zd d Z dS) MemoryHandlerNTcCs"t||||_||_||_dSr)r>r flushLeveltarget flushOnClose)rr?rDrErFrrrr)s zMemoryHandler.__init__cCst|j|jkp|j|jkSr)r?r@r?r rDrrrrrA=s zMemoryHandler.shouldFlushcCs*|z||_W|n |0dSr)rrEr)rrErrr setTargetDszMemoryHandler.setTargetcCsL|z4|jr2|jD]}|j|q|jW|n |0dSr)rrEr@handlerBrrrrrrNs  zMemoryHandler.flushcCszzB|jr|W|zd|_t|W|qv|0n2|zd|_t|W|n |00dSr)rFrrrEr>r3rrrrrr3_s   zMemoryHandler.close) r(r)r*r rrrArGrr3rrrrrC#s  rCc@s,eZdZddZddZddZddZd S) QueueHandlercCstj|||_dSr)r rrqueue)rrJrrrr{s zQueueHandler.__init__cCs|j|dSr)rJ put_nowaitrrrrenqueueszQueueHandler.enqueuecCs6||}t|}||_||_d|_d|_d|_|Sr)r<copyrrArrexc_textr@rrrprepares  zQueueHandler.preparecCs6z|||Wnty0||Yn0dSr)rLrOrrrrrrrs zQueueHandler.emitN)r(r)r*rrLrOrrrrrrIps  rIc@sVeZdZdZddddZddZdd Zd d Zd d ZddZ ddZ ddZ dS) QueueListenerNF)respect_handler_levelcGs||_||_d|_||_dSr)rJhandlers_threadrQ)rrJrQrRrrrrszQueueListener.__init__cCs |j|Sr)rJr)rblockrrrdequeueszQueueListener.dequeuecCs&tj|jd|_}d|_|dS)N)rET) threadingThread_monitorrSrstart)rr`rrrrYszQueueListener.startcCs|SrrrrrrrOszQueueListener.preparecCs@||}|jD]*}|js d}n |j|jk}|r||qdSr)rOrRrQr levelrH)rrhandlerprocessrrrrHs   zQueueListener.handlecCsn|j}t|d}z>|d}||jur6|r2|Wqj|||rL|WqtjyfYqjYq0qdS)N task_doneT)rJhasattrrU _sentinelr]rHEmpty)rqZ has_task_donerrrrrXs     zQueueListener._monitorcCs|j|jdSr)rJrKr_rrrrenqueue_sentinel szQueueListener.enqueue_sentinelcCs||jd|_dSr)rbrSryrrrrstops zQueueListener.stop) r(r)r*r_rrUrYrOrHrXrbrcrrrrrPs     rP)&r rr!rrr]rYr\rrrrJrVrMZDEFAULT_TCP_LOGGING_PORTZDEFAULT_UDP_LOGGING_PORTZDEFAULT_HTTP_LOGGING_PORTZDEFAULT_SOAP_LOGGING_PORTrZSYSLOG_TCP_PORTrir rr+rBrrrrrrrr%r>rCrIobjectrPrrrrs:8JQyH(*PbZ9ME