a `eh@sddlZddlZddlZddlZddlZddlZddlZddlZddl m Z m Z ddl m Z ejdkspedrdZdZdZdZdZdZdZndZdZd Zd Zd Zd Zd ZeZddZddZGdddZeZejZejZ ej!Z"ej#Z$dS)N) double_quote args_to_dict)virtual_memoryZwin32Z no_ansiesczzzzzzzcCsVttjtjtdd&}|ddWdS1sH0YdS)Nz..VERSION r) openospathjoindirname__file__readsplitstrip)fr/code/opendm/log.py odm_version!srcCs,t}t|jddt|jdddS)Ni)total available)rroundrr)Zmemrrrmemory%src@seZdZddZddZddZddZd d Zdd d ZddZ gfddZ ddZ ddZ ddZ ddZddZddZdS) ODMLoggercCsd|_d|_tj|_dS)N)jsonjson_output_filedatetimenow start_timeselfrrr__init__-szODMLogger.__init__cCsd|dd}tZtd|||tftj|jdurb|jddd|| dWdn1sv0YdS) N[] z %s%s %s%sstagesmessages)messagetype) ljustlockprintENDCsysstdoutflushrappendlower)r ZstartcmsgZ level_namelevelrrrlog2s  z ODMLogger.logcCs||_|d|_i|_t|jd<t|jd<t|jd<d|jd<t||jd<|j |jd<g|jd <g|jd <d |jd <dS) NrZ odmVersionrZcpusr&imagesZoptions startTimer% processesFsuccess) json_output_filesrrrrmultiprocessing cpu_countrr isoformat)r Z output_filesargsrrrinit_json_output=s      zODMLogger.init_json_outputcCs*|jdur&|jd||gddS)Nr%)namer7r')rr1r=)r r@rrrrlog_json_stage_runKs   zODMLogger.log_json_stage_runcCs|jdur||jd<dS)Nr6)r)r countrrrlog_json_imagesSs zODMLogger.log_json_imagesrcCsB|jdur>||d|jd<tttj|d|jd<|dS)N)coder(errorrZ stackTrace)rlistmapstrrr_log_json_end_time)r rE exit_codeZ stack_tracerrrlog_json_stage_errorWs   zODMLogger.log_json_stage_errorcCs |jdurd|jd<|dS)NTr9)rrIrrrrlog_json_success`s  zODMLogger.log_json_successcCs4|jdur0||d}|r ||d<|jd|dS)N)ZcommandZexitCodeoutputr8)rr1)r cmdrJrMdrrrlog_json_processes zODMLogger.log_json_processcCs|jdurtj}||jd<t||jd|jd<|jdr|jdd}||d<tj |d}t||d|d<dS)NZendTimeZ totalTimer%r&r7) rrrr=rrZ total_secondsdateutilZparserZisoparse)r Zend_timeZ last_stagerrrrrIps    zODMLogger._log_json_end_timecCs|t|ddS)NINFO)r5DEFAULTr r3rrrinfo|szODMLogger.infocCs|t|ddS)NWARNING)r5rWrUrrrwarningszODMLogger.warningcCs|t|ddS)NZERRORr5FAILrUrrrrEszODMLogger.errorcCs|t|ddS)NZ EXCEPTIONrYrUrrr exceptionszODMLogger.exceptionc Cs|jdur|jdurzht|jd&}|tj|jddWdn1sN0Y|jddD]}t|j|qfWn4ty}zt dt |WYd}~n d}~00dS)Nw)ZindentzCannot write log.json: %s) rrrwritedumpsr:shutilcopy Exceptionr,rH)r rerrrcloses4zODMLogger.closeN)r)__name__ __module__ __qualname__r!r5r?rArCrKrLrPrIrVrXrEr[rerrrrr,s    r)%r.Z threadingr rrZdateutil.parserrRrar;opendm.arghelpersrrZvmemrplatformgetenvZHEADERZOKBLUEZOKGREENrTrWrZr-ZLockr+rrrZloggerrVODM_INFOrXZ ODM_WARNINGrE ODM_ERRORr[Z ODM_EXCEPTIONrrrrsB f