U e5dqâã@svddlZddlZddlZddlZddlZddlZddlZddlmZm Z m Z ddl Z ddl Z ddl Z dZdZdZdZdZdZdZGd d „d ejƒZGd d „d eƒZGd d„deƒZGdd„dejƒZGdd„dejƒZGdd„deƒZGdd„dejƒZGdd„dejƒZGdd„dejƒZGdd„dejƒZ Gdd„dejƒZ!Gdd „d e!ƒZ"Gd!d"„d"ejƒZ#Gd#d$„d$e$ƒZ%dS)%éN)ÚST_DEVÚST_INOÚST_MTIMEi<#i=#i>#i?#ié€Qc@s.eZdZd dd„Zdd„Zdd„Zd d „ZdS) ÚBaseRotatingHandlerNFcCs0tj |||||¡||_||_d|_d|_dS©N)ÚloggingÚ FileHandlerÚ__init__ÚmodeÚencodingÚnamerÚrotator©ÚselfÚfilenamer r Údelay©rú(/usr/lib64/python3.8/logging/handlers.pyr 3s zBaseRotatingHandler.__init__cCsHz$| |¡r| ¡tj ||¡Wntk rB| |¡YnXdSr)ÚshouldRolloverÚ doRolloverrr ÚemitÚ ExceptionÚ handleError©rÚrecordrrrr=s  zBaseRotatingHandler.emitcCst|jƒs|}n | |¡}|Sr)Úcallabler )rZ default_nameÚresultrrrÚrotation_filenameKs  z%BaseRotatingHandler.rotation_filenamecCs4t|jƒs$tj |¡r0t ||¡n | ||¡dSr)rrÚosÚpathÚexistsÚrename)rÚsourceÚdestrrrÚrotate^s  zBaseRotatingHandler.rotate)NF)Ú__name__Ú __module__Ú __qualname__r rrr%rrrrr-s rc@s&eZdZd dd„Zdd„Zd d „ZdS) ÚRotatingFileHandlerÚarNFcCs.|dkr d}t |||||¡||_||_dS)Nrr*)rr ÚmaxBytesÚ backupCount)rrr r+r,r rrrrr xs zRotatingFileHandler.__init__cCsÚ|jr|j ¡d|_|jdkrÆt|jdddƒD]^}| d|j|f¡}| d|j|df¡}tj |¡r2tj |¡r„t  |¡t  ||¡q2| |jd¡}tj |¡r¸t  |¡|  |j|¡|j sÖ|  ¡|_dS)Nrééÿÿÿÿz%s.%dz.1)ÚstreamÚcloser,ÚrangerÚ baseFilenamerr r!Úremover"r%rÚ_open)rÚiZsfnÚdfnrrrr˜s&   ÿ     zRotatingFileHandler.doRollovercCsZ|jdkr| ¡|_|jdkrVd| |¡}|j dd¡|j ¡t|ƒ|jkrVdSdS)Nrz%s ér-)r/r4r+ÚformatÚseekÚtellÚlen©rrÚmsgrrrr¯s   z"RotatingFileHandler.shouldRollover)r*rrNF)r&r'r(r rrrrrrr)ss r)c@s6eZdZddd„Zdd „Zd d „Zd d „Zdd„ZdS)ÚTimedRotatingFileHandlerÚhr-rNFc Cs–t ||d||¡| ¡|_||_||_||_|jdkrLd|_d|_d|_ nì|jdkrjd|_d|_d |_ nÎ|jd krˆd |_d |_d |_ n°|jdksœ|jdkr°d|_d|_d|_ nˆ|j  d¡r*d|_t |jƒdkràt d|jƒ‚|jddksþ|jddkr t d|jƒ‚t |jdƒ|_d|_d|_ nt d|jƒ‚t |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+)?$ÚHéz %Y-%m-%d_%Hz!^\d{4}-\d{2}-\d{2}_\d{2}(\.\w+)?$ÚDÚMIDNIGHTrz%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): %sÚ0Ú6z-Invalid day specified for weekly rollover: %sz'Invalid rollover interval specified: %s)rr ÚupperÚwhenr,ÚutcÚatTimeÚintervalÚsuffixÚextMatchÚ startswithr;Ú ValueErrorÚintÚ dayOfWeekÚreÚcompileÚASCIIr2rr r!ÚstatrÚtimeÚcomputeRolloverÚ rolloverAt) rrrKrNr,r rrLrMÚtrrrr ÇsL      z!TimedRotatingFileHandler.__init__cCsd||j}|jdks"|j d¡r`|jr4t |¡}n t |¡}|d}|d}|d}|d}|jdkrnt}n |jj d|jj d|jj }||d|d|} | dkrÂ| t7} |d d }|| }|j d¡r`|} | |j kr`| |j krþ|j | } nd| |j d } || d } |js\|d } t | ¡d }| |kr\| sPd }nd}| |7} | }|S)NrFrGéééérBrr-érr.éðñÿÿrD) rNrKrQrLrYÚgmtimeÚ localtimerMÚ _MIDNIGHTZhourZminuteÚsecondrT)rÚ currentTimerr\Z currentHourZ currentMinuteZ currentSecondZ currentDayZ rotate_tsÚrZdayZ daysToWaitÚ newRolloverAtÚdstNowÚ dstAtRolloverÚaddendrrrrZsL    ÿÿ      z(TimedRotatingFileHandler.computeRollovercCstt ¡ƒ}||jkrdSdS)Nr-r)rSrYr[)rrr\rrrrIs  z'TimedRotatingFileHandler.shouldRolloverc Cs¬tj |j¡\}}t |¡}g}|d}t|ƒ}|D]@}|d|…|kr4||d…}|j |¡r4| tj  ||¡¡q4t|ƒ|j krŠg}n|  ¡|dt|ƒ|j …}|S)NÚ.) rr Úsplitr2Úlistdirr;rPÚmatchÚappendÚjoinr,Úsort) rZdirNameZbaseNameZ fileNamesrÚprefixZplenZfileNamerOrrrÚgetFilesToDeleteUs   z)TimedRotatingFileHandler.getFilesToDeletec Csv|jr|j ¡d|_tt ¡ƒ}t |¡d}|j|j}|jrNt |¡}n6t |¡}|d}||kr„|rrd}nd}t ||¡}|  |j dt  |j |¡¡}t j |¡r¸t  |¡| |j |¡|jdkrè| ¡D]}t  |¡qØ|jsø| ¡|_| |¡} | |kr| |j} q|jdks4|j d¡rl|jslt | ¡d} || krl|s`d}nd}| |7} | |_dS)Nr.rDrbrmrrFrG)r/r0rSrYrdr[rNrLrcrr2ÚstrftimerOrr r!r3r%r,rurr4rZrKrQ) rrgrjr\Z timeTupleZdstThenrlr6ÚsrirkrrrrlsJ       ÿ        " z#TimedRotatingFileHandler.doRollover)r?r-rNFFN)r&r'r(r rZrrurrrrrr>¿s  9I r>c@s.eZdZd dd„Zdd„Zdd „Zd d „ZdS) ÚWatchedFileHandlerr*NFcCs,tj |||||¡d\|_|_| ¡dS)N)r.r.)rr r ÚdevÚinoÚ _statstreamrrrrr ²s zWatchedFileHandler.__init__cCs0|jr,t |j ¡¡}|t|t|_|_dSr)r/rÚfstatÚfilenorrryrz©rZsresrrrr{·szWatchedFileHandler._statstreamcCs„zt |j¡}Wntk r(d}YnX|rJ|t|jksJ|t|jkr€|jdk r€|j  ¡|j  ¡d|_|  ¡|_|  ¡dSr) rrXr2ÚFileNotFoundErrorrryrrzr/Úflushr0r4r{r~rrrÚreopenIfNeeded¼s       z!WatchedFileHandler.reopenIfNeededcCs| ¡tj ||¡dSr)rrr rrrrrrØszWatchedFileHandler.emit)r*NF)r&r'r(r r{rrrrrrrxžs rxc@sNeZdZdd„Zddd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dS)Ú SocketHandlercCsZtj |¡||_||_|dkr(||_n ||f|_d|_d|_d|_d|_ d|_ d|_ dS)NFgð?g>@g@) rÚHandlerr ÚhostÚportÚaddressÚsockÚ closeOnErrorÚ retryTimeÚ retryStartÚretryMaxÚ retryFactor©rr„r…rrrr ðs  zSocketHandler.__init__r-cCsj|jdk rtj|j|d}nJt tjtj¡}| |¡z| |j¡Wntk rd|  ¡‚YnX|S)N©Útimeout) r…ÚsocketZcreate_connectionr†ÚAF_UNIXÚ SOCK_STREAMZ settimeoutÚconnectÚOSErrorr0)rrrrrrÚ makeSocket s  zSocketHandler.makeSocketcCs–t ¡}|jdkrd}n ||jk}|r’z| ¡|_d|_WnVtk r|jdkr^|j|_n"|j|j|_|j|jkr€|j|_||j|_YnXdS©NT) rYr‰r•r‡r”rŠZ retryPeriodrŒr‹)rZnowZattemptrrrÚ createSockets       zSocketHandler.createSocketcCsR|jdkr| ¡|jrNz|j |¡Wn$tk rL|j ¡d|_YnXdSr)r‡r—Úsendallr”r0©rrwrrrÚsend6s  zSocketHandler.sendcCsj|j}|r| |¡}t|jƒ}| ¡|d<d|d<d|d<| dd¡t |d¡}t  dt |ƒ¡}||S)Nr=ÚargsÚexc_infoÚmessager-z>L) rœr8ÚdictÚ__dict__Z getMessageÚpopÚpickleÚdumpsÚstructZpackr;)rrZeiZdummyÚdrwZslenrrrÚ makePickleIs     zSocketHandler.makePicklecCs0|jr|jr|j ¡d|_ntj ||¡dSr)rˆr‡r0rrƒrrrrrr_s  zSocketHandler.handleErrorcCs<z| |¡}| |¡Wntk r6| |¡YnXdSr)r¥ršrr)rrrwrrrrms  zSocketHandler.emitcCs@| ¡z(|j}|r"d|_| ¡tj |¡W5| ¡XdSr)ÚacquireÚreleaser‡r0rrƒ)rr‡rrrr0|szSocketHandler.closeN)r-) r&r'r(r r•r—ršr¥rrr0rrrrr‚ãs  r‚c@s$eZdZdd„Zdd„Zdd„ZdS)ÚDatagramHandlercCst |||¡d|_dS)NF)r‚r rˆrrrrr •szDatagramHandler.__init__cCs*|jdkrtj}ntj}t |tj¡}|Sr)r…rr‘ZAF_INETÚ SOCK_DGRAM)rZfamilyrwrrrr•œs  zDatagramHandler.makeSocketcCs&|jdkr| ¡|j ||j¡dSr)r‡r—Úsendtor†r™rrrrš¨s zDatagramHandler.sendN)r&r'r(r r•ršrrrrr¨Šs  r¨c@seZdZdZdZdZdZdZdZdZ dZ dZ dZ dZ dZdZdZdZdZd Zd Zd Zd Zd ZdZdZdZdZdZdZdZeeee eeee eeeedœ Zeeeeee ee eeee eeeeeeeeedœZ ddddddœZ!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éé é é éééééééé) ZalertZcritÚcriticalÚdebugZemergÚerrÚerrorÚinfoZnoticeZpanicÚwarnÚwarning)ZauthZauthprivZcronÚdaemonZftpZkernZlprZmailZnewsZsecurityZsyslogÚuserZuucpZlocal0Zlocal1Zlocal2Zlocal3Zlocal4Zlocal5Zlocal6Zlocal7r¹r¼r¾r»r¸)ÚDEBUGÚINFOÚWARNINGÚERRORÚCRITICALZ localhostNc Cs4tj |¡||_||_||_t|tƒrTd|_z|  |¡Wnt k rPYnXnÜd|_|dkrht j }|\}}t   ||d|¡}|sŒt dƒ‚|D]„}|\}}} } } d} } z.t   ||| ¡} |t jkrÎ|  | ¡WqWqt k r}z|} | dk r|  ¡W5d}~XYqXq| dk r$| ‚| |_ ||_dS)NTFrz!getaddrinfo returns an empty list)rrƒr r†ÚfacilityÚsocktypeÚ isinstanceÚstrÚ unixsocketÚ_connect_unixsocketr”rr©Z getaddrinfor’r“r0)rr†rÆrÇr„r…ZressÚresZafÚprotoÚ_Zsarºr‡Úexcrrrr sB       zSysLogHandler.__init__c Cs¸|j}|dkrtj}t tj|¡|_z|j |¡||_Wnxtk r²|j ¡|jdk r`‚tj}t tj|¡|_z|j |¡||_Wn tk r¬|j ¡‚YnXYnXdSr)rÇrr©r‘r“r”r0r’)rr†Z use_socktyperrrrËQs&       z!SysLogHandler._connect_unixsocketcCs4t|tƒr|j|}t|tƒr(|j|}|d>|BS)Nr])rÈrÉÚfacility_namesÚpriority_names)rrÆZpriorityrrrÚencodePriorityis     zSysLogHandler.encodePrioritycCs2| ¡z|j ¡tj |¡W5| ¡XdSr)r¦r§rr0rrƒ©rrrrr0vs  zSysLogHandler.closecCs|j |d¡S)Nr¾)Ú priority_mapÚget)rZ levelNamerrrÚ mapPriorityszSysLogHandler.mapPriorityÚTcCszÜ| |¡}|jr|j|}|jr*|d7}d| |j| |j¡¡}| d¡}| d¡}||}|jr°z|j   |¡WqÚt k r¬|j   ¡|  |j¡|j   |¡YqÚXn*|jt jkrÎ|j  ||j¡n |j  |¡Wntk rú| |¡YnXdS)Núz<%d>úutf-8)r8ÚidentÚ append_nulrÒrÆrÖZ levelnameÚencoderÊrršr”r0rËr†rÇr©rªr˜rr)rrr=ZpriorrrrŽs0    ÿ     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_LOCAL7rÑrÐrÔÚSYSLOG_UDP_PORTr rËrÒr0rÖrÚrÛrrrrrr«´s ôëûÿ 6   r«c@s&eZdZd dd„Zdd„Zdd„ZdS) Ú SMTPHandlerNç@cCsŠtj |¡t|ttfƒr(|\|_|_n|d|_|_t|ttfƒrR|\|_|_ nd|_||_ t|t ƒrn|g}||_ ||_ ||_||_dSr)rrƒr rÈÚlistÚtupleÚmailhostÚmailportÚusernameÚpasswordÚfromaddrrÉÚtoaddrsÚsubjectÚsecurer)rrârærçrèÚ credentialsrérrrrr ¶s  zSMTPHandler.__init__cCs|jSr)rèrrrrÚ getSubjectÙszSMTPHandler.getSubjectcCszÞddl}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)Ú EmailMessagerŽZFromú,ZToZSubjectZDate)ÚsmtplibZ email.messagerìZ email.utilsrãZ SMTP_PORTZSMTPrârrærrrçrëZutilsrdZ set_contentr8räréZehloZstarttlsZloginråZ send_messageÚquitrr)rrrîrìZemailr…Zsmtpr=rrrrâs0      zSMTPHandler.emit)NNrß)r&r'r(r rërrrrrrÞ²s ÿ # rÞc@s>eZdZddd„Zdd„Zdd„Zd d „Zd d „Zd d„ZdS)ÚNTEventLogHandlerNÚ Applicationc CsÜtj |¡z¨ddl}ddl}||_||_|s`tj  |jj ¡}tj  |d¡}tj  |dd¡}||_ ||_ |j |||¡|j|_tj|jtj|jtj|jtj|jtj|ji|_Wn"tk rÖtdƒd|_YnXdS)Nrzwin32service.pydzWThe Python Win32 extensions for NT (service, event logging) appear not to be available.)rrƒr Úwin32evtlogutilÚ win32evtlogÚappnameÚ_welurr rnÚ__file__rrÚdllnameÚlogtypeZAddSourceToRegistryZEVENTLOG_ERROR_TYPEÚdeftyperÁZEVENTLOG_INFORMATION_TYPErÂrÃZEVENTLOG_WARNING_TYPErÄrÅÚtypemapÚ ImportErrorÚprint)rrôr÷røròrórrrr s6 û zNTEventLogHandler.__init__cCsdS)Nr-rrrrrÚ getMessageID&szNTEventLogHandler.getMessageIDcCsdS)NrrrrrrÚgetEventCategory0sz"NTEventLogHandler.getEventCategorycCs|j |j|j¡Sr)rúrÕÚlevelnorùrrrrÚ getEventType9s zNTEventLogHandler.getEventTypecCsn|jrjzD| |¡}| |¡}| |¡}| |¡}|j |j||||g¡Wntk rh| |¡YnXdSr) rõrýrþrr8Z ReportEventrôrr)rrÚidÚcatÚtyper=rrrrFs    zNTEventLogHandler.emitcCstj |¡dSr)rrƒr0rÓrrrr0Ws zNTEventLogHandler.close)Nrñ) r&r'r(r rýrþrrr0rrrrrðs     rðc@s&eZdZd dd„Zdd„Zdd „ZdS) Ú HTTPHandlerÚGETFNcCs`tj |¡| ¡}|dkr$tdƒ‚|s8|dk r8tdƒ‚||_||_||_||_||_ ||_ dS)N)rÚPOSTzmethod must be GET or POSTz3context parameter only makes sense with secure=True) rrƒr rJrRr„ÚurlÚmethodrérêÚcontext)rr„rrrérêr rrrr is  zHTTPHandler.__init__cCs|jSr)rŸrrrrÚ mapLogRecord}szHTTPHandler.mapLogRecordc CsxzPddl}ddl}|j}|jr4|jj||jd}n |j |¡}|j}|j   |  |¡¡}|j dkrŠ|  d¡dkrvd}nd}|d||f}| |j |¡|  d¡} | dkr¶|d| …}|j dkrà| d d ¡| d tt|ƒƒ¡|jr$ddl} d |j d ¡} 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:%srÙzBasic ÚasciiZ Authorization)Z http.clientZ urllib.parser„réZclientZHTTPSConnectionr ZHTTPConnectionrÚparseZ urlencoder rÚfindZ putrequestZ putheaderrÉr;rêÚbase64rÜZ b64encodeÚstripÚdecodeZ endheadersršZ getresponserr) rrZhttpZurllibr„r?rÚdataÚsepr5rrwrrrr…sB     ÿ   zHTTPHandler.emit)rFNN)r&r'r(r r rrrrrrds ÿ rc@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) ÚBufferingHandlercCstj |¡||_g|_dSr)rrƒr ÚcapacityÚbuffer)rrrrrr ¹s zBufferingHandler.__init__cCst|jƒ|jkSr)r;rrrrrrÚ shouldFlushÁszBufferingHandler.shouldFlushcCs"|j |¡| |¡r| ¡dSr)rrqrr€rrrrrÊs  zBufferingHandler.emitcCs"| ¡z g|_W5| ¡XdSr)r¦r§rrÓrrrr€Õs zBufferingHandler.flushc Cs z | ¡W5tj |¡XdSr)rrƒr0r€rÓrrrr0ás zBufferingHandler.closeN)r&r'r(r rrr€r0rrrrr³s    rc@s>eZdZejddfdd„Zdd„Zdd„Zd d „Zd d „Z dS) Ú MemoryHandlerNTcCs"t ||¡||_||_||_dSr)rr Ú flushLevelÚtargetÚ flushOnClose)rrrrrrrrr òs zMemoryHandler.__init__cCst|jƒ|jkp|j|jkSr)r;rrrÿrrrrrrs ÿzMemoryHandler.shouldFlushcCs"| ¡z ||_W5| ¡XdSr)r¦r§r)rrrrrÚ setTarget s zMemoryHandler.setTargetcCs@| ¡z(|jr.|jD]}|j |¡qg|_W5| ¡XdSr)r¦r§rrÚhandlerrrrr€s  zMemoryHandler.flushcCsBz|jr| ¡W5| ¡zd|_t |¡W5| ¡XXdSr)r¦r§rrr0rr€rÓrrrr0(s zMemoryHandler.close) r&r'r(rrÄr rrr€r0rrrrrìsÿ  rc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) Ú QueueHandlercCstj |¡||_dSr)rrƒr Úqueue)rr!rrrr Ds zQueueHandler.__init__cCs|j |¡dSr)r!Ú put_nowaitrrrrÚenqueueKszQueueHandler.enqueuecCs6| |¡}t |¡}||_||_d|_d|_d|_|Sr)r8Úcopyrr=r›rœZexc_textr<rrrÚprepareUs  zQueueHandler.preparecCs8z| | |¡¡Wntk r2| |¡YnXdSr)r#r%rrrrrrrrszQueueHandler.emitN)r&r'r(r r#r%rrrrrr 9s  r c@sVeZdZdZddœdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dS)Ú QueueListenerNF)Úrespect_handler_levelcGs||_||_d|_||_dSr)r!ÚhandlersÚ_threadr')rr!r'r(rrrr †szQueueListener.__init__cCs |j |¡Sr)r!rÕ)rÚblockrrrÚdequeueszQueueListener.dequeuecCs&tj|jd|_}d|_| ¡dS)N)rT)Ú threadingZThreadÚ_monitorr)r¿Ústart)rr\rrrr.™szQueueListener.startcCs|Srrrrrrr%¤szQueueListener.preparecCs@| |¡}|jD]*}|js d}n |j|jk}|r| |¡qdSr–)r%r(r'rÿÚlevelr)rrZhandlerZprocessrrrr®s   zQueueListener.handlecCsp|j}t|dƒ}z>| d¡}||jkr6|r2| ¡Wql| |¡|rL| ¡Wqtjk rhYqlYqXqdS)NÚ task_doneT)r!Úhasattrr+Ú _sentinelr0rZEmpty)rÚqZ has_task_donerrrrr-¾s     zQueueListener._monitorcCs|j |j¡dSr)r!r"r2rÓrrrÚenqueue_sentinelÕszQueueListener.enqueue_sentinelcCs| ¡|j ¡d|_dSr)r4r)rrrÓrrrÚstopßs zQueueListener.stop) r&r'r(r2r r+r.r%rr-r4r5rrrrr&~s     r&)&rrrr¡r£rYrUrXrrrr!r,r$ZDEFAULT_TCP_LOGGING_PORTZDEFAULT_UDP_LOGGING_PORTZDEFAULT_HTTP_LOGGING_PORTZDEFAULT_SOAP_LOGGING_PORTrÝZSYSLOG_TCP_PORTrer rr)r>rxrƒr‚r¨r«rÞrðrrrr Úobjectr&rrrrÚs:8FL`E(*PbO9ME