3 ©ft`r(ã@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"d%Z#dd„Z$Gdd„de j%j&ƒZ'dd„Z(dd„Z)Gdd „d eƒ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,j8j9e7ƒdS)&é)Úabsolute_import)Úunicode_literalsNédéééécsdd„‰‡‡fdd„}|S)zGMethod decorator turning the method into noop on second or later calls.c_sdS)N©)Z_argsZ_kwargsr r ú/usr/lib/python3.6/logging.pyÚnoop3szonly_once..noopcs"ˆ|f|ž|Žt|ˆjˆƒdS)N)ÚsetattrÚ__name__)ÚselfÚargsÚkwargs)Úfuncr r r Ú swan_song5szonly_once..swan_songr )rrr )rr r Ú only_once1src@seZdZdd„Zdd„ZdS)Ú_MaxLevelFiltercCs ||_dS)N)Ú 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 tj|tƒS)N)Ú_VERBOSE_VAL_MAPPINGÚgetÚTRACE)Ú cfg_errvalr r r Ú_cfg_verbose_val2levelQsr%)rrrcCstj|tjƒS)N)Ú_ERR_VAL_MAPPINGr"ÚloggingÚWARNING)r$r r r Ú_cfg_err_val2level^sr)cCs|dS)Nz.gzr )Únamer r r Úcompression_namercsr+é€icCs\t|dƒ�>}tj|dƒ�&}x|jtƒ}|s,P|j|ƒqWWdQRXWdQRXtj|ƒdS)NÚrbÚwb)ÚopenÚgzipÚreadÚ CHUNK_SIZEÚwriteÚosÚremove)ÚsourceÚdestZsfZwfÚdatar r r Úcompression_rotatorjs  "r9cs&eZdZd ‡fdd„ Zdd„Z‡ZS) ÚMultiprocessRotatingFileHandlerÚarNFcs.tt|ƒj||||||ƒtjjddƒ|_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__cCs¤xžyR|j|ƒrD|j�*tj|jƒj}|jƒtj|j|ƒWdQRXtj j ||ƒdSt j j t j jfk r~tjdƒYqtk rš|j|ƒdSXqWdS)Ng{®Gáz„?)ZshouldRolloverr?r4ÚstatZ baseFilenameÚst_modeZ doRolloverÚchmodr'Z FileHandlerÚemitr=Ú exceptionsZProcessLockErrorZThreadLockErrorÚtimeZsleepÚ ExceptionZ handleError)rrrAr r r rI{s  z$MultiprocessRotatingFileHandler.emit)r;rrNF)r rrrrIÚ __classcell__r r )rEr r:usr:cCsltjj|ƒs,tjjtjj|ƒƒtjj|ƒt|||d�}t j ddƒ}t j |_ |j|ƒ|rht|_t|_|S)N)rBrCz%%(asctime)s %(levelname)s %(message)sz%Y-%m-%dT%H:%M:%S%z)r4ÚpathÚexistsr=ÚutilZ ensure_dirÚdirnameZtouchr:r'Z FormatterrKZ localtimeZ converterZ setFormatterr9Zrotatorr+Znamer)ÚlogfileÚlog_sizeÚ log_rotateÚ log_compressÚhandlerZ formatterr r r Ú_create_filehandler�s   rWcCs|jttjjƒdS)N)ÚlogÚINFOr=ÚconstZ LOG_MARKER)Zloggerr r r Ú _paint_mark›sr[c@sBeZdZdd„Zedd„ƒZedd„ƒZedd„ƒZd d d „Zd S)ÚLoggingcCsPd|_|_tjtdƒtjtdƒtjtdƒtjtdƒtjdƒdt_ dS)NÚDDEBUGÚSUBDEBUGr#ÚALLTF) Ústdout_handlerÚstderr_handlerr'Z addLevelNamer]r^r#r_ZcaptureWarningsZraiseExceptions)rr r r r s      zLogging.__init__cCsttjdƒ}|jtƒtjtjƒ}|jtƒ|jt tj ƒƒ|j |ƒ||_ tjtj ƒ}|jt ƒ|j |ƒ||_dS)Nr=)r'Ú getLoggerÚsetLevelr#Z StreamHandlerÚsysÚstdoutrYZ addFilterrr(Ú addHandlerr`Ústderrra)rÚ logger_dnfrergr r r Ú _presetup©s        zLogging._presetupc Csötjdƒ}|jtƒtjj|tjj ƒ}t ||||ƒ}|j|ƒ|j |ƒtjdƒ} | j |ƒtjdƒ} | jtƒtjj|tjj ƒ}t ||||ƒ}| j |ƒt jjj ||tkƒtjdƒ} d| _| jtƒtjj|tjjƒ}t ||||ƒ}| j |ƒdS)Nr=z py.warningsÚlibrepozdnf.rpmF)r'rbrcr#r4rNÚjoinr=rZZLOGrWrfZ LOG_LIBREPOÚlibdnfZrepoZ LibrepoLogr_Z propagater^ZLOG_RPM) rÚ logfile_levelÚlogdirrSrTrUrhrRrVÚlogger_warningsZlogger_librepoÚ logger_rpmr r r Ú_setup_file_loggers»s(           zLogging._setup_file_loggersc Cs |jƒ|j|||||ƒtjdƒ}|j|jƒtjdƒ} | j|jƒ| j|jƒtjdƒ} |jjtƒ|jjtƒt | ƒt | ƒ|jj|ƒ|jj|ƒdS)Nz py.warningszdnf.rpmr=) rirqr'rbrfrar`rcr(r[) rZ verbose_levelZ error_levelrmrnrSrTrUrorprhr r r Ú_setupÙs         zLogging._setupFc Csft|jƒ}t|jƒ}t|jƒ}|j}|j}|j}|j} |rL|j ||||| ƒS|j ||||||| ƒSdS)N) r%Z debuglevelr)Z errorlevelZ logfilelevelrnrSrTrUrqrr) rZconfZfile_loggers_onlyZverbose_level_rZ error_level_rZlogfile_level_rrnrSrTrUr r r Ú_setup_from_dnf_confñs   zLogging._setup_from_dnf_confN)F) r rrrrrirqrrrsr r r r r\Ÿs    r\c@seZdZdd„Zdd„ZdS)ÚTimercCs||_tjƒ|_dS)N)ÚwhatrKÚstart)rrur r r rszTimer.__init__cCs6tjƒ|j}d|j|df}tjdƒjt|ƒdS)Nztimer: %s: %d msièr=)rKrvrur'rbrXr])rZdiffÚmsgr r r Ú__call__szTimer.__call__N)r rrrrxr r r r rtsrtcs$eZdZ‡fdd„Zdd„Z‡ZS)ÚLibdnfLoggerCBcs*tt|ƒjƒtjdƒ|_tjdƒ|_dS)Nr=rj)r<ryrr'rbÚ _dnf_loggerÚ_librepo_logger)r)rEr r rs zLibdnfLoggerCB.__init__cGsft|ƒdkr|\}}nt|ƒdkr.|\}}}}|tjjjkrP|jjt||ƒn|jjt||ƒdS)zoLog message. source -- integer, defines origin (libdnf, librepo, ...) of message, 0 - unknown rrN) ÚlenrlÚutilsÚLoggerZLOG_SOURCE_LIBREPOr{rXÚ_LIBDNF_TO_DNF_LOGLEVEL_MAPPINGrz)rr6rÚlevelÚmessagerKÚpidr r r r3s    zLibdnfLoggerCB.write)r rrrr3rMr r )rEr rys ryi):Z __future__rrZdnf.exceptionsr=Z dnf.constZdnf.lockZdnf.utilZ libdnf.reporlr'Zlogging.handlersr4rdrKÚwarningsr0Z SUPERCRITICALZCRITICALZERRORr(rYÚDEBUGr]r^r#r_rÚobjectrr!r%r&r)r+r2r9ZhandlersZRotatingFileHandlerr:rWr[r\rtr}r~ZLevel_CRITICALZ Level_ERRORZ Level_WARNINGZ Level_NOTICEZ Level_INFOZ Level_DEBUGZ Level_TRACErryZlibdnfLoggerCBZLogZ setLoggerr r r r Úsv      a