3 À<×eûã @sddlZddlZddlZddlZddlZddlZddljZddlZddl Z ddl Z yddl m Z Wnddl m Z YnXdgZ daiZe jƒZGdd„deƒZdd„Zdd „Zd d „Zd d„ZGd d„dejƒƒZejejejƒejeƒejejƒdS)éN)ÚStringIOÚgetc@seZdZdd„ZdS)Ú LogHandlercCs||_||_dS)N)ÚhandlerÚstream)Úselfrr©rú/usr/lib/python3.6/logs.pyÚ__init__szLogHandler.__init__N)Ú__name__Ú __module__Ú __qualname__r rrrr rsrcCs<tjƒ}tjtj}d}xt|ƒD]}||j|ƒ7}q"W|S)NÚ)ÚrandomZ SystemRandomÚstringZ ascii_lettersZdigitsÚrangeZchoice)ZlengthÚrÚcharsÚresÚirrr Ú_random_strings  rc Cs”t�†x&tdƒD]}tdƒ}|tkrPqWdStƒ}tj|ƒ}|j|ƒtjdƒ}|j |ƒt j |ƒt ||ƒ}|t|<t j d|ƒ|SQRXdS)Né éz%%(levelname)-8s %(name)s: %(message)szAdded log handler %s.)Úlog_handlers_lockrrÚ log_handlersrÚloggingÚ StreamHandlerÚsetLevelÚ FormatterÚ setFormatterÚ root_loggerÚ addHandlerrÚdebug)Z log_levelrÚtokenrrZ formatterÚ log_handlerrrr Úlog_capture_start$s"     r%cCsjt�\y t|}Wntk r&dSX|jjƒ}|jjƒtj|jƒt|=tj d|ƒ|SQRXdS)NzRemoved log handler %s.) rrÚKeyErrorrÚgetvalueÚcloser Ú removeHandlerrr")r#r$Zcontentrrr Úlog_capture_finish8s    r*cCs|tdkrtjdƒatjƒj}|jd}|dkr6d}tS|jdƒrp|jddƒ\}}tj |ƒ}|j ƒ|j dƒ|Sdsxt ‚dS) NZtunedr Ú__main__ztuned.Ú.éZNOTSETF) r rZ getLoggerÚinspectZ currentframeÚf_backÚf_localsÚ startswithÚsplitZgetChildÚremove_all_handlersrÚAssertionError)Zcalling_moduleÚnameÚrootZchildZ child_loggerrrr rEs      csxeZdZdZejdƒZdZdZ‡fdd„Z dd„Z dd „Z e j e je jfd d „Zd d „Zedd„ƒZedd„ƒZ‡ZS)Ú TunedLoggerz!Custom TuneD daemon logger class.z1%(asctime)s %(levelname)-8s %(name)s: %(message)sNcs*tt|ƒj||Ž|jtjƒ|jƒdS)N)Úsuperr7r rrÚINFOÚswitch_to_console)rÚargsÚkwargs)Ú __class__rr r ^s zTunedLogger.__init__cOs|jtj|f|ž|ŽdS)N)ÚlogÚconstsÚLOG_LEVEL_CONSOLE)rÚmsgr;r<rrr ÚconsolecszTunedLogger.consolecCs |jƒ|jƒ|j|jƒdS)N)Ú_setup_console_handlerr3r!Ú_console_handler)rrrr r:fszTunedLogger.switch_to_consolecCs&|j|||ƒ|jƒ|j|jƒdS)N)Ú_setup_file_handlerr3r!Ú _file_handler)rÚfilenameÚmaxBytesÚ backupCountrrr Úswitch_to_filekszTunedLogger.switch_to_filecCs"|j}x|D]}|j|ƒq WdS)N)Úhandlersr))rZ _handlersrrrr r3rs zTunedLogger.remove_all_handlerscCs*|jdk rdStjƒ|_|jj|jƒdS)N)rDrrrÚ _formatter)Úclsrrr rCws  z"TunedLogger._setup_console_handlercCsj|jdk rdStjj|ƒ}|dkr&d}tjj|ƒss4  6