U ,aq@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@s.eZdZd ddZddZddZd d ZdS) BaseRotatingHandlerNFcCs0tj|||||||_||_d|_d|_dSN)logging FileHandler__init__modeencodingnamerrotatorselffilenamer r delayr5/opt/alt/python38/lib64/python3.8/logging/handlers.pyr 3s zBaseRotatingHandler.__init__cCsHz$||r|tj||Wntk rB||YnXdSr)shouldRollover doRolloverrr emit Exception handleErrorrrecordrrrr=s  zBaseRotatingHandler.emitcCst|js|}n ||}|Sr)callabler )rZ default_nameresultrrrrotation_filenameKs  z%BaseRotatingHandler.rotation_filenamecCs4t|js$tj|r0t||n |||dSr)rrospathexistsrename)rsourcedestrrrrotate^s  zBaseRotatingHandler.rotate)NF)__name__ __module__ __qualname__r rrr%rrrrr-s rc@s&eZdZd ddZddZd d ZdS) RotatingFileHandlerarNFcCs.|dkr d}t|||||||_||_dS)Nrr*)rr maxBytes backupCount)rrr r+r,r rrrrr xs 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 baseFilenamerr r!remover"r%r_open)riZsfndfnrrrrs&        zRotatingFileHandler.doRollovercCsZ|jdkr||_|jdkrVd||}|jdd|jt||jkrVdSdS)Nrz%s r-)r/r4r+formatseektelllenrrmsgrrrrs   z"RotatingFileHandler.shouldRollover)r*rrNF)r&r'r(r rrrrrrr)ss r)c@s6eZdZdddZdd Zd d Zd d ZddZdS)TimedRotatingFileHandlerhr-rNFc Cst||d||||_||_||_||_|jdkrLd|_d|_d|_ n|jdkrjd|_d|_d |_ n|jd krd |_d |_d |_ n|jdks|jdkrd|_d|_d|_ n|j dr*d|_t |jdkrt d|j|jddks|jddkr t d|jt |jd|_d|_d|_ nt d|jt|j tj|_ |j||_|j}tj|rzt|t} n t t} || |_dS)Nr*Sr-z%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: r7zHYou 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)rr upperwhenr,utcatTimeintervalsuffixextMatch startswithr; ValueErrorint dayOfWeekrecompileASCIIr2rr r!statrtimecomputeRollover rolloverAt) rrrKrNr,r rrLrMtrrrr sL      z!TimedRotatingFileHandler.__init__cCsd||j}|jdks"|jdr`|jr4t|}n t|}|d}|d}|d}|d}|jdkrnt}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)NrFrGrBrr-rr.rD) rNrKrQrLrYgmtime localtimerM _MIDNIGHTZhourZminutesecondrT)r currentTimerr\Z currentHourZ currentMinuteZ currentSecondZ currentDayZ rotate_tsrZdayZ daysToWait newRolloverAtdstNow dstAtRolloveraddendrrrrZsL          z(TimedRotatingFileHandler.computeRollovercCstt}||jkrdSdS)Nr-r)rSrYr[)rrr\rrrrIs  z'TimedRotatingFileHandler.shouldRolloverc Cstj|j\}}t|}g}|d}t|}|D]@}|d||kr4||d}|j|r4|tj ||q4t||j krg}n| |dt||j }|S)N.) rr splitr2listdirr;rPmatchappendjoinr,sort) rZdirNameZbaseNameZ fileNamesrprefixZplenZfileNamerOrrrgetFilesToDeleteUs   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)Nr.rDrbrmrrFrG)r/r0rSrYrdr[rNrLrcrr2strftimerOrr r!r3r%r,rurr4rZrKrQ) rrgrjr\Z timeTupleZdstThenrlr6srirkrrrrlsJ               " z#TimedRotatingFileHandler.doRollover)r?r-rNFFN)r&r'r(r rZrrurrrrrr>s  9I r>c@s.eZdZd ddZddZdd Zd d ZdS) WatchedFileHandlerr*NFcCs,tj|||||d\|_|_|dS)N)r.r.)rr r devino _statstreamrrrrr s zWatchedFileHandler.__init__cCs0|jr,t|j}|t|t|_|_dSr)r/rfstatfilenorrryrzrZsresrrrr{szWatchedFileHandler._statstreamcCszt|j}Wntk r(d}YnX|rJ|t|jksJ|t|jkr|jdk r|j |j d|_| |_| dSr) rrXr2FileNotFoundErrorrryrrzr/flushr0r4r{r~rrrreopenIfNeededs       z!WatchedFileHandler.reopenIfNeededcCs|tj||dSr)rrr rrrrrrszWatchedFileHandler.emit)r*NF)r&r'r(r r{rrrrrrrxs rxc@sNeZdZddZdddZddZdd Zd d Zd d ZddZ ddZ dS) SocketHandlercCsZtj|||_||_|dkr(||_n ||f|_d|_d|_d|_d|_ d|_ d|_ dS)NFg?g>@g@) rHandlerr hostportaddresssock closeOnError retryTime retryStartretryMax retryFactorrrrrrrr s  zSocketHandler.__init__r-cCsj|jdk rtj|j|d}nJttjtj}||z||jWntk rd| YnX|S)Ntimeout) rsocketZcreate_connectionrAF_UNIX SOCK_STREAMZ settimeoutconnectOSErrorr0)rrrrrr makeSocket s  zSocketHandler.makeSocketcCst}|jdkrd}n ||jk}|rz||_d|_WnVtk r|jdkr^|j|_n"|j|j|_|j|jkr|j|_||j|_YnXdSNT) rYrrrrrZ retryPeriodrr)rZnowZattemptrrr createSockets       zSocketHandler.createSocketcCsR|jdkr||jrNz|j|Wn$tk rL|jd|_YnXdSr)rrsendallrr0rrwrrrsend6s  zSocketHandler.sendcCsj|j}|r||}t|j}||d<d|d<d|d<|ddt|d}t dt |}||S)Nr=argsexc_infomessager-z>L) rr8dict__dict__Z getMessagepoppickledumpsstructZpackr;)rrZeiZdummydrwZslenrrr makePickleIs     zSocketHandler.makePicklecCs0|jr|jr|jd|_ntj||dSr)rrr0rrrrrrrr_s  zSocketHandler.handleErrorcCs<z||}||Wntk r6||YnXdSr)rrrr)rrrwrrrrms  zSocketHandler.emitcCs@|z(|j}|r"d|_|tj|W5|XdSr)acquirereleaserr0rr)rrrrrr0|szSocketHandler.closeN)r-) r&r'r(r rrrrrrr0rrrrrs  rc@s$eZdZddZddZddZdS)DatagramHandlercCst|||d|_dS)NF)rr rrrrrr szDatagramHandler.__init__cCs*|jdkrtj}ntj}t|tj}|Sr)rrrZAF_INET SOCK_DGRAM)rZfamilyrwrrrrs  zDatagramHandler.makeSocketcCs&|jdkr||j||jdSr)rrsendtorrrrrrs zDatagramHandler.sendN)r&r'r(r rrrrrrrs  rc@seZdZdZdZdZdZdZdZdZ dZ dZ dZ dZ dZdZdZdZdZd Zd Zd Zd Zd ZdZdZdZdZdZdZdZeeee eeee eeeed Zeeeeee ee eeee eeeeeeeeedZ ddddddZ!de"fe dfdd Z#d!d"Z$d#d$Z%d%d&Z&d'd(Z'd)Z(d*Z)d+d,Z*dS)- SysLogHandlerrr-r7r]r^r_r`ra ) ZalertZcritcriticaldebugZemergerrerrorinfoZnoticeZpanicwarnwarning)ZauthZauthprivZcrondaemonZftpZkernZlprZmailZnewsZsecurityZsysloguserZuucpZlocal0Zlocal1Zlocal2Zlocal3Zlocal4Zlocal5Zlocal6Zlocal7rrrrr)DEBUGINFOWARNINGERRORCRITICALZ localhostNc Cs4tj|||_||_||_t|trTd|_z| |Wnt k rPYnXnd|_|dkrht j }|\}}t ||d|}|st d|D]}|\}}} } } d} } z.t ||| } |t jkr| | WqWqt k r}z|} | dk r| W5d}~XYqXq| dk r$| | |_ ||_dS)NTFrz!getaddrinfo returns an empty list)rrr rfacilitysocktype isinstancestr unixsocket_connect_unixsocketrrrZ getaddrinforrr0)rrrrrrZressresZafproto_Zsarrexcrrrr sB       zSysLogHandler.__init__c Cs|j}|dkrtj}ttj||_z|j|||_Wnxtk r|j|jdk r`tj}ttj||_z|j|||_Wn tk r|jYnXYnXdSr)rrrrrrr0r)rrZ use_socktyperrrrQs&       z!SysLogHandler._connect_unixsocketcCs4t|tr|j|}t|tr(|j|}|d>|BS)Nr])rrfacility_namespriority_names)rrZpriorityrrrencodePriorityis     zSysLogHandler.encodePrioritycCs2|z|jtj|W5|XdSr)rrrr0rrrrrrr0vs  zSysLogHandler.closecCs|j|dS)Nr) priority_mapget)rZ levelNamerrr mapPriorityszSysLogHandler.mapPriorityTcCsz||}|jr|j|}|jr*|d7}d||j||j}|d}|d}||}|jrz|j |Wqt k r|j | |j|j |YqXn*|jt jkr|j ||jn |j |Wntk r||YnXdS)Nz<%d>utf-8)r8ident append_nulrrrZ levelnameencoderrrrr0rrrrrrrr)rrr=Zpriorrrrs0         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_FTPZ LOG_LOCAL0Z LOG_LOCAL1Z LOG_LOCAL2Z LOG_LOCAL3Z LOG_LOCAL4Z LOG_LOCAL5Z LOG_LOCAL6Z LOG_LOCAL7rrrSYSLOG_UDP_PORTr rrr0rrrrrrrrrs 6   rc@s&eZdZd ddZddZddZdS) SMTPHandlerN@cCstj|t|ttfr(|\|_|_n|d|_|_t|ttfrR|\|_|_ nd|_||_ t|t rn|g}||_ ||_ ||_||_dSr)rrr rlisttuplemailhostmailportusernamepasswordfromaddrrtoaddrssubjectsecurer)rrrrr credentialsrrrrrr s  zSMTPHandler.__init__cCs|jSr)rrrrr getSubjectszSMTPHandler.getSubjectcCszddl}ddlm}ddl}|j}|s.|j}|j|j||jd}|}|j |d<d |j |d<| ||d<|j |d<||||jr|jdk r||j|j|||j|j|||Wntk r||YnXdS) Nr) EmailMessagerZFrom,ZToZSubjectZDate)smtplibZ email.messagerZ email.utilsrZ SMTP_PORTZSMTPrrrrrrrZutilsrdZ set_contentr8rrZehloZstarttlsZloginrZ send_messagequitrr)rrrrZemailrZsmtpr=rrrrs0      zSMTPHandler.emit)NNr)r&r'r(r rrrrrrrs  # 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"tk rtdd|_YnXdS)Nrzwin32service.pydzWThe Python Win32 extensions for NT (service, event logging) appear not to be available.)rrr win32evtlogutil win32evtlogappname_welurr rn__file__rrdllnamelogtypeZAddSourceToRegistryZEVENTLOG_ERROR_TYPEdeftyperZEVENTLOG_INFORMATION_TYPErrZEVENTLOG_WARNING_TYPErrtypemap ImportErrorprint)rrrrrrrrrr s6  zNTEventLogHandler.__init__cCsdS)Nr-rrrrr getMessageID&szNTEventLogHandler.getMessageIDcCsdS)NrrrrrrgetEventCategory0sz"NTEventLogHandler.getEventCategorycCs|j|j|jSr)rrlevelnorrrrr getEventType9s zNTEventLogHandler.getEventTypecCsn|jrjzD||}||}||}||}|j|j||||gWntk rh||YnXdSr) rrrrr8Z ReportEventrrr)rridcattyper=rrrrFs    zNTEventLogHandler.emitcCstj|dSr)rrr0rrrrr0Ws zNTEventLogHandler.close)Nr) r&r'r(r rrrrr0rrrrrs     rc@s&eZdZd ddZddZdd ZdS) HTTPHandlerGETFNcCs`tj||}|dkr$td|s8|dk r8td||_||_||_||_||_ ||_ dS)N)rPOSTzmethod must be GET or POSTz3context parameter only makes sense with secure=True) rrr rJrRrurlmethodrrcontext)rrrrrrr rrrr is  zHTTPHandler.__init__cCs|jSr)rrrrr mapLogRecord}szHTTPHandler.mapLogRecordc CsxzPddl}ddl}|j}|jr4|jj||jd}n |j|}|j}|j | |}|j dkr| ddkrvd}nd}|d||f}||j || d} | dkr|d| }|j dkr|d d |d tt||jr$ddl} d |jd } d| | d} |d| ||j dkrH||d |Wn tk rr||YnXdS)Nr)r r?&z%c%s:rz Content-typez!application/x-www-form-urlencodedzContent-lengthz%s:%srzBasic asciiZ Authorization)Z http.clientZ urllib.parserrZclientZHTTPSConnectionr ZHTTPConnectionrparseZ urlencoder rfindZ putrequestZ putheaderrr;rbase64rZ b64encodestripdecodeZ endheadersrZ getresponserr) rrZhttpZurllibrr?rdatasepr5rrwrrrrsB        zHTTPHandler.emit)rFNN)r&r'r(r r rrrrrrds  rc@s4eZdZddZddZddZddZd d Zd S) BufferingHandlercCstj|||_g|_dSr)rrr capacitybuffer)rrrrrr s zBufferingHandler.__init__cCst|j|jkSr)r;rrrrrr shouldFlushszBufferingHandler.shouldFlushcCs"|j|||r|dSr)rrqrrrrrrrs  zBufferingHandler.emitcCs"|z g|_W5|XdSr)rrrrrrrrs zBufferingHandler.flushc Cs z |W5tj|XdSr)rrr0rrrrrr0s zBufferingHandler.closeN)r&r'r(r rrrr0rrrrrs    rc@s>eZdZejddfddZddZddZd d Zd d Z dS) MemoryHandlerNTcCs"t||||_||_||_dSr)rr flushLeveltarget flushOnClose)rrrrrrrrr s zMemoryHandler.__init__cCst|j|jkp|j|jkSr)r;rrrrrrrrrs zMemoryHandler.shouldFlushcCs"|z ||_W5|XdSr)rrr)rrrrr setTarget s zMemoryHandler.setTargetcCs@|z(|jr.|jD]}|j|qg|_W5|XdSr)rrrrhandlerrrrrs  zMemoryHandler.flushcCsBz|jr|W5|zd|_t|W5|XXdSr)rrrrr0rrrrrrr0(s zMemoryHandler.close) r&r'r(rrr rrrr0rrrrrs  rc@s,eZdZddZddZddZddZd S) QueueHandlercCstj|||_dSr)rrr queue)rr!rrrr Ds zQueueHandler.__init__cCs|j|dSr)r! put_nowaitrrrrenqueueKszQueueHandler.enqueuecCs6||}t|}||_||_d|_d|_d|_|Sr)r8copyrr=rrZexc_textr<rrrprepareUs  zQueueHandler.preparecCs8z|||Wntk r2||YnXdSr)r#r%rrrrrrrrszQueueHandler.emitN)r&r'r(r r#r%rrrrrr 9s  r c@sVeZdZdZddddZddZdd Zd d Zd d ZddZ ddZ ddZ dS) QueueListenerNF)respect_handler_levelcGs||_||_d|_||_dSr)r!handlers_threadr')rr!r'r(rrrr szQueueListener.__init__cCs |j|Sr)r!r)rblockrrrdequeueszQueueListener.dequeuecCs&tj|jd|_}d|_|dS)N)rT) threadingZThread_monitorr)rstart)rr\rrrr.szQueueListener.startcCs|Srrrrrrr%szQueueListener.preparecCs@||}|jD]*}|js d}n |j|jk}|r||qdSr)r%r(r'rlevelr)rrZhandlerZprocessrrrrs   zQueueListener.handlecCsp|j}t|d}z>|d}||jkr6|r2|Wql|||rL|Wqtjk rhYqlYqXqdS)N task_doneT)r!hasattrr+ _sentinelr0rZEmpty)rqZ has_task_donerrrrr-s     zQueueListener._monitorcCs|j|jdSr)r!r"r2rrrrenqueue_sentinelszQueueListener.enqueue_sentinelcCs||jd|_dSr)r4r)rrrrrrstops zQueueListener.stop) r&r'r(r2r r+r.r%rr-r4r5rrrrr&~s     r&)&rrrrrrYrUrXrrrr!r,r$ZDEFAULT_TCP_LOGGING_PORTZDEFAULT_UDP_LOGGING_PORTZDEFAULT_HTTP_LOGGING_PORTZDEFAULT_SOAP_LOGGING_PORTrZSYSLOG_TCP_PORTrer rr)r>rxrrrrrrrrrr objectr&rrrrs:8FL`E(*PbO9ME