^c dZddlZddlmZddlmZddlmZmZm Z ddl m Z m Z dZ iZe jeZiZe jeZedd d edd d eddd eddd eddd eddd eddd ejZGddZdZdZeddddedfgedejd !d"ZdS)#a{log repository events to a blackbox for debugging Logs event information to .hg/blackbox.log to help debug and diagnose problems. The events that get logged can be configured via the blackbox.track and blackbox.ignore config keys. Examples:: [blackbox] track = * ignore = pythonhook # dirty is *EXPENSIVE* (slow); # each log entry indicates `+` if the repository is dirty, like :hg:`id`. dirty = True # record the source of log messages logsource = True [blackbox] track = command, commandfinish, commandexception, exthook, pythonhook [blackbox] track = incoming [blackbox] # limit the size of a log file maxsize = 1.5 MB # rotate up to N log files when the current one gets too big maxfiles = 3 [blackbox] # Include microseconds in log entries with %f (see Python function # datetime.datetime.strftime) date-format = %Y-%m-%d @ %H:%M:%S.%f N)_)hex)encoding loggingutil registrar)dateutilprocutilsships-with-hg-coreblackboxdirtyF)defaultmaxsizes1 MB logsourcemaxfilestrackcdgSN*r0/usr/lib/python3/dist-packages/hgext/blackbox.pyr`sTFrignorec gdS)N)s chgservers cmdservers extensionrrrrrres >>>r date-formatrc&eZdZdZdZdZdZdS)blackboxloggerc.||_t|dd|_t|dd|_|dd|_|dd|_d|_ dS)Nr rrrr F) _reposet configlist_trackedevents_ignoredevents configint _maxfiles configbytes_maxsize_inlog)selfuirepos r__init__zblackboxlogger.__init__msz !"-- X"F"FGG!"-- Y"G"GHHk;??{J??  rc8d|jvo||jvp||jvSr)r"r#)r)events rtrackedzblackboxlogger.trackedus/ D' ' LE9L,L* d) ) *rc~|jrdSd|_ |||||d|_dS#d|_wxYw)NTF)r(_log)r)r*r.msgoptss rlogzblackboxlogger.logzsU ;  F  IIb%d + + +DKKK%DK    s3 <c|dd}|dd}|rtj||}ntj|ddd}t j}dt jz} d} |jd} | } d d | D} | dd r| d d d rd } | ddrd|z}nd} d}||| | | ||f}tj ||jjd|j|j5}|||zdddn #1swxYwYng#t$t&f$rS}|j|dt/j|jzYd}~dSd}~wwxYw|t4_dS)Nsdevels default-dater rs%Y-%m-%d %H:%M:%S.%fs%dr+cPg|]#}t|$Sr)rnode).0ps r z'blackboxlogger._log..s&8881QVVXX888rr TF)missingmergebranchrs [%s]s%s %s @%s%s (%s)%s> %s blackbox.log)namemaxfilesmaxsizes*warning: cannot write to blackbox.log: %s ) configdateconfigrdatestrr getusergetpidrparentsjoin configbooldirtyr openlogfilevfsr%r'writeIOErrorOSErrorr"cleardebugr strtolocalstrerror _lastloggerlogger)r)r*r.r2r3r dateformatdateuserpidchangedctxrIrevsrcfmtargsfperrs rr1zblackboxlogger._logsg--/::YY{N;;  K#GZ88DD #G-DEEcrcJD!!ho'''j++--ii8888899 ==h / / CIIe5>5 5  G ==l 3 3 U"CCC +C$Wc3%cl334    FFFFF " s=8FE9- F9E==FE=FG)AG$$G)N)__name__ __module__ __qualname__r,r/r4r1rrrrrlsP***    +"+"+"+"+"rrc<|dtdS)Nr ) setloggerrV)r*s r uipopulaterisLLk*****rc|sdSt||}|d|tj |t_|jddS)Nr r@)localrrhrVrW_wlockfreeprefixadd)r*r+rWs r reposetuprnsn ::<<B % %FLLf%%%!# o.....rlslimit sthe number of events to showshg blackbox [OPTION]...T) helpcategory helpbasicc|jdsdS|d}|dd}|d}d}g}t |D]9} ||krn0t jd| r|dz }|| :| d t |dS) z!view the recent repository eventsr@Nlimitr rs8^\d{4}[-/]\d{2}[-/]\d{2} \d{2}:\d{2}:\d{2}(.\d*)? .*> .*) rNexistsgetreadsplitreversedrematchappendstatusrJ) r*r+revsr3rtrblinescountoutputlines rblackboxrs 8??? + + HHW  E /4 ( (B GGIIOOE " "E E F   E>> E 8 H$    QJE dIIejj&))**+++++r)__doc__r}mercurial.i18nrmercurial.noder mercurialrrrmercurial.utilsrr testedwithcmdtablecommand configtable configitem proxyloggerrVrrirnCATEGORY_MAINTENANCErrrrrs""J  #  ) H % % !Y !+ . .              N   > >  ;4444%k%'' E"E"E"E"E"E"E"E"P+++///(  xQQ>??@A !!-,,,,,r