hgext/blackbox.py
changeset 40647 6d9a87fb8c89
parent 40646 179c02baaa8c
child 40648 85372dc0cca3
equal deleted inserted replaced
40646:179c02baaa8c 40647:6d9a87fb8c89
   128     return vfs(name, 'a')
   128     return vfs(name, 'a')
   129 
   129 
   130 class blackboxlogger(object):
   130 class blackboxlogger(object):
   131     def __init__(self, ui):
   131     def __init__(self, ui):
   132         self._repo = None
   132         self._repo = None
       
   133         self._inlog = False
   133         self.track = ui.configlist('blackbox', 'track')
   134         self.track = ui.configlist('blackbox', 'track')
   134 
   135 
   135     @property
   136     @property
   136     def _bbvfs(self):
   137     def _bbvfs(self):
   137         vfs = None
   138         vfs = None
   156         else:
   157         else:
   157             return
   158             return
   158         _lastlogger._log(ui, event, msg, opts)
   159         _lastlogger._log(ui, event, msg, opts)
   159 
   160 
   160     def _log(self, ui, event, msg, opts):
   161     def _log(self, ui, event, msg, opts):
   161         if getattr(self, '_bbinlog', False):
   162         if self._inlog:
   162             # recursion and failure guard
   163             # recursion and failure guard
   163             return
   164             return
   164         self._bbinlog = True
   165         self._inlog = True
   165         default = ui.configdate('devel', 'default-date')
   166         default = ui.configdate('devel', 'default-date')
   166         date = dateutil.datestr(default, ui.config('blackbox', 'date-format'))
   167         date = dateutil.datestr(default, ui.config('blackbox', 'date-format'))
   167         user = procutil.getuser()
   168         user = procutil.getuser()
   168         pid = '%d' % procutil.getpid()
   169         pid = '%d' % procutil.getpid()
   169         formattedmsg = msg[0] % msg[1:]
   170         formattedmsg = msg[0] % msg[1:]
   185             with _openlogfile(ui, self._bbvfs) as fp:
   186             with _openlogfile(ui, self._bbvfs) as fp:
   186                 fp.write(fmt % args)
   187                 fp.write(fmt % args)
   187         except (IOError, OSError) as err:
   188         except (IOError, OSError) as err:
   188             ui.debug('warning: cannot write to blackbox.log: %s\n' %
   189             ui.debug('warning: cannot write to blackbox.log: %s\n' %
   189                      encoding.strtolocal(err.strerror))
   190                      encoding.strtolocal(err.strerror))
   190             # do not restore _bbinlog intentionally to avoid failed
   191             # do not restore _inlog intentionally to avoid failed
   191             # logging again
   192             # logging again
   192         else:
   193         else:
   193             self._bbinlog = False
   194             self._inlog = False
   194 
   195 
   195     def setrepo(self, repo):
   196     def setrepo(self, repo):
   196         self._repo = repo
   197         self._repo = repo
   197 
   198 
   198 def wrapui(ui):
   199 def wrapui(ui):