a ©!cr(ã@sØddlmZddlmZddlZddlZddlZddlZddlZ ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZdZe jZe jZe jZe jZe jZdZdZdZdZd d „ZGd d „d eƒZee je je je je je jeeeed œ Zdd„Zee je jdœZ dd„Z!dd„Z"dZ#dd„Z$Gdd„de j%j&ƒZ'dd„Z(dd„Z)Gdd„deƒZ*Gd d!„d!eƒZ+e j,j-j.ee j,j-j/ee j,j-j0ee j,j-j1ee j,j-j2ee j,j-j3ee j,j-j4eiZ5Gd"d#„d#e j,j-ƒZ6e6ƒZ7e j,j8 9e7¡dS)$é)Úabsolute_import)Úunicode_literalsNédéééécsdd„‰‡‡fdd„}|S)zGMethod decorator turning the method into noop on second or later calls.c_sdS©N©)Ú_argsÚ_kwargsr r ú//usr/lib/python3.9/site-packages/dnf/logging.pyÚnoop3szonly_once..noopcs(ˆ|g|¢Ri|¤Žt|ˆjˆƒdSr )ÚsetattrÚ__name__)ÚselfÚargsÚkwargs©Úfuncrr r Ú swan_song5szonly_once..swan_songr )rrr rr Ú only_once1src@seZdZdd„Zdd„ZdS)Ú_MaxLevelFiltercCs ||_dSr )Ú max_level)rrr r r Ú__init__;sz_MaxLevelFilter.__init__cCs|j|jkrdSdS)Nré)Zlevelnor)rÚrecordr r r Úfilter>s z_MaxLevelFilter.filterN)rÚ __module__Ú __qualname__rrr r r r r:sr) rrréréréré é cCs t |t¡Sr )Ú_VERBOSE_VAL_MAPPINGÚgetÚTRACE©Z cfg_errvalr r r Ú_cfg_verbose_val2levelQsr))rrrcCst |tj¡Sr )Ú_ERR_VAL_MAPPINGr&ÚloggingÚWARNINGr(r r r Ú_cfg_err_val2level^sr-cCs|dS)Nz.gzr )Únamer r r Úcompression_namercsr/ic Cs€t|dƒX}t |d¡,}| t¡}|s*q6| |¡qWdƒn1sJ0YWdƒn1sh0Yt |¡dS)NÚrbÚwb)ÚopenÚgzipÚreadÚ CHUNK_SIZEÚwriteÚosÚremove)ÚsourceÚdestZsfZwfÚdatar r r Úcompression_rotatorjs  Hr<cs&eZdZd ‡fdd„ Zdd„Z‡ZS) ÚMultiprocessRotatingFileHandlerÚarNFcs.tt|ƒ ||||||¡tj dd¡|_dS)Nz /var/log/T)Úsuperr=rÚdnfÚlockZbuild_log_lockÚ rotate_lock)rÚfilenameÚmodeÚmaxBytesÚ backupCountÚencodingZdelay©Ú __class__r r rvs  ÿz(MultiprocessRotatingFileHandler.__init__c Cs´zh| |¡rV|j4t |j¡j}| ¡t |j|¡Wdƒn1sL0Ytj   ||¡WdSt j j t j jfyt d¡Yqty¬| |¡YdS0qdS)Ng{®Gáz„?)ZshouldRolloverrBr7ÚstatZ baseFilenameÚst_modeZ doRolloverÚchmodr+Z FileHandlerÚemitr@Ú exceptionsZProcessLockErrorZThreadLockErrorÚtimeÚsleepÚ ExceptionZ handleError)rrrDr r r rM{s ,  z$MultiprocessRotatingFileHandler.emit)r>rrNF)rrrrrMÚ __classcell__r r rHr r=usr=cCsltj |¡s,tj tj |¡¡tj |¡t|||d}t   dd¡}t j |_ | |¡|rht|_t|_|S)N)rErFz%%(asctime)s %(levelname)s %(message)sz%Y-%m-%dT%H:%M:%S%z)r7ÚpathÚexistsr@ÚutilZ ensure_dirÚdirnameÚtouchr=r+Z FormatterrOÚ localtimeZ converterZ setFormatterr<Zrotatorr/Znamer)ÚlogfileÚlog_sizeÚ log_rotateÚ log_compressÚhandlerÚ formatterr r r Ú_create_filehandlers  ÿ r_cCs| ttjj¡dSr )ÚlogÚINFOr@ÚconstZ LOG_MARKER)Úloggerr r r Ú _paint_mark›srdc@sBeZdZdd„Zedd„ƒZedd„ƒZedd„ƒZd d d „Zd S)ÚLoggingcCsPd|_|_t td¡t td¡t td¡t td¡t d¡dt_ dS)NÚDDEBUGÚSUBDEBUGr'ÚALLTF) Ústdout_handlerÚstderr_handlerr+Z addLevelNamerfrgr'rhZcaptureWarningsZraiseExceptions©rr r r r s      zLogging.__init__cCstt d¡}| t¡t tj¡}| t¡| t tj ƒ¡|  |¡||_ t tj ¡}| t ¡|  |¡||_dS)Nr@)r+Ú getLoggerÚsetLevelr'Z StreamHandlerÚsysÚstdoutraZ addFilterrr,Ú addHandlerriÚstderrrj)rÚ logger_dnfrorqr r r Ú _presetup©s        zLogging._presetupc Csöt d¡}| t¡tj |tjj ¡}t ||||ƒ}| |¡|  |¡t d¡} |   |¡t d¡} |  t¡tj |tjj ¡}t ||||ƒ}|   |¡t jj  ||tk¡t d¡} d| _|  t¡tj |tjj¡}t ||||ƒ}|   |¡dS)Nr@ú py.warningsÚlibrepoúdnf.rpmF)r+rlrmr'r7rSÚjoinr@rbZLOGr_rpZ LOG_LIBREPOÚlibdnfZrepoZ LibrepoLogrhZ propagatergZLOG_RPM) rÚ logfile_levelÚlogdirrZr[r\rrrYr]Úlogger_warningsZlogger_librepoÚ logger_rpmr r r Ú_setup_file_loggers»s(           zLogging._setup_file_loggersc Cs | ¡| |||||¡t d¡}| |j¡t d¡} |  |j¡|  |j¡t d¡} |j t¡|j t¡t | ƒt | ƒ|j |¡|j |¡dS)Nrtrvr@) rsr}r+rlrprjrirmr,rd) rZ verbose_levelZ error_levelryrzrZr[r\r{r|rrr r r Ú_setupÙs         zLogging._setupFc Csft|jƒ}t|jƒ}t|jƒ}|j}|j}|j}|j} |rL|  ||||| ¡S|  ||||||| ¡SdSr ) r)Z debuglevelr-Z errorlevelZ logfilelevelrzrZr[r\r}r~) rZconfZfile_loggers_onlyZverbose_level_rZ error_level_rZlogfile_level_rrzrZr[r\r r r Ú_setup_from_dnf_confñs   ÿzLogging._setup_from_dnf_confN)F) rrrrrrsr}r~rr r r r reŸs    rec@seZdZdd„Zdd„ZdS)ÚTimercCs||_t ¡|_dSr )ÚwhatrOÚstart)rrr r r rszTimer.__init__cCs6t ¡|j}d|j|df}t d¡ t|¡dS)Nztimer: %s: %d msièr@)rOr‚rr+rlr`rf)rÚdiffÚmsgr r r Ú__call__szTimer.__call__N)rrrrr…r r r r r€sr€cs$eZdZ‡fdd„Zdd„Z‡ZS)ÚLibdnfLoggerCBcs*tt|ƒ ¡t d¡|_t d¡|_dS)Nr@ru)r?r†rr+rlÚ _dnf_loggerÚ_librepo_loggerrkrHr r rs zLibdnfLoggerCB.__init__cGsft|ƒdkr|\}}nt|ƒdkr.|\}}}}|tjjjkrP|j t||¡n|j t||¡dS)zoLog message. source -- integer, defines origin (libdnf, librepo, ...) of message, 0 - unknown rrN) ÚlenrxÚutilsÚLoggerZLOG_SOURCE_LIBREPOrˆr`Ú_LIBDNF_TO_DNF_LOGLEVEL_MAPPINGr‡)rr9rÚlevelÚmessagerOÚpidr r r r6s    zLibdnfLoggerCB.write)rrrrr6rRr r rHr r†s r†):Z __future__rrZdnf.exceptionsr@Z dnf.constZdnf.lockZdnf.utilZ libdnf.reporxr+Zlogging.handlersr7rnrOÚwarningsr3Z SUPERCRITICALZCRITICALZERRORr,raÚDEBUGrfrgr'rhrÚobjectrr%r)r*r-r/r5r<ÚhandlersZRotatingFileHandlerr=r_rdrer€rŠr‹ZLevel_CRITICALZ Level_ERRORZ Level_WARNINGZ Level_NOTICEZ Level_INFOZ Level_DEBUGZ Level_TRACErŒr†ZlibdnfLoggerCBZLogZ setLoggerr r r r Ús|    õý a       ù