Mercurial > hg
comparison hgext/blackbox.py @ 40798:644adf9c20fb
blackbox: pass in options to _openlogfile() as arguments
This prepares for extracting utility function from the blackbox module.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sun, 18 Nov 2018 18:21:39 +0900 |
parents | ea2688c84e4b |
children | 03127e580980 |
comparison
equal
deleted
inserted
replaced
40797:ea2688c84e4b | 40798:644adf9c20fb |
---|---|
87 ) | 87 ) |
88 configitem('blackbox', 'date-format', | 88 configitem('blackbox', 'date-format', |
89 default='%Y/%m/%d %H:%M:%S', | 89 default='%Y/%m/%d %H:%M:%S', |
90 ) | 90 ) |
91 | 91 |
92 def _openlogfile(ui, vfs): | 92 def _openlogfile(ui, vfs, name, maxfiles=0, maxsize=0): |
93 def rotate(oldpath, newpath): | 93 def rotate(oldpath, newpath): |
94 try: | 94 try: |
95 vfs.unlink(newpath) | 95 vfs.unlink(newpath) |
96 except OSError as err: | 96 except OSError as err: |
97 if err.errno != errno.ENOENT: | 97 if err.errno != errno.ENOENT: |
103 except OSError as err: | 103 except OSError as err: |
104 if err.errno != errno.ENOENT: | 104 if err.errno != errno.ENOENT: |
105 ui.debug("warning: cannot rename '%s' to '%s': %s\n" % | 105 ui.debug("warning: cannot rename '%s' to '%s': %s\n" % |
106 (newpath, oldpath, err.strerror)) | 106 (newpath, oldpath, err.strerror)) |
107 | 107 |
108 maxsize = ui.configbytes('blackbox', 'maxsize') | |
109 name = 'blackbox.log' | |
110 if maxsize > 0: | 108 if maxsize > 0: |
111 try: | 109 try: |
112 st = vfs.stat(name) | 110 st = vfs.stat(name) |
113 except OSError: | 111 except OSError: |
114 pass | 112 pass |
115 else: | 113 else: |
116 if st.st_size >= maxsize: | 114 if st.st_size >= maxsize: |
117 path = vfs.join(name) | 115 path = vfs.join(name) |
118 maxfiles = ui.configint('blackbox', 'maxfiles') | |
119 for i in pycompat.xrange(maxfiles - 1, 1, -1): | 116 for i in pycompat.xrange(maxfiles - 1, 1, -1): |
120 rotate(oldpath='%s.%d' % (path, i - 1), | 117 rotate(oldpath='%s.%d' % (path, i - 1), |
121 newpath='%s.%d' % (path, i)) | 118 newpath='%s.%d' % (path, i)) |
122 rotate(oldpath=path, | 119 rotate(oldpath=path, |
123 newpath=maxfiles > 0 and path + '.1') | 120 newpath=maxfiles > 0 and path + '.1') |
140 | 137 |
141 class blackboxlogger(object): | 138 class blackboxlogger(object): |
142 def __init__(self, ui, repo): | 139 def __init__(self, ui, repo): |
143 self._repo = repo | 140 self._repo = repo |
144 self._trackedevents = set(ui.configlist('blackbox', 'track')) | 141 self._trackedevents = set(ui.configlist('blackbox', 'track')) |
142 self._maxfiles = ui.configint('blackbox', 'maxfiles') | |
143 self._maxsize = ui.configbytes('blackbox', 'maxsize') | |
145 | 144 |
146 def tracked(self, event): | 145 def tracked(self, event): |
147 return b'*' in self._trackedevents or event in self._trackedevents | 146 return b'*' in self._trackedevents or event in self._trackedevents |
148 | 147 |
149 def log(self, ui, event, msg, opts): | 148 def log(self, ui, event, msg, opts): |
164 else: | 163 else: |
165 src = '' | 164 src = '' |
166 try: | 165 try: |
167 fmt = '%s %s @%s%s (%s)%s> %s' | 166 fmt = '%s %s @%s%s (%s)%s> %s' |
168 args = (date, user, rev, changed, pid, src, msg) | 167 args = (date, user, rev, changed, pid, src, msg) |
169 with _openlogfile(ui, self._repo.vfs) as fp: | 168 with _openlogfile(ui, self._repo.vfs, name='blackbox.log', |
169 maxfiles=self._maxfiles, | |
170 maxsize=self._maxsize) as fp: | |
170 fp.write(fmt % args) | 171 fp.write(fmt % args) |
171 except (IOError, OSError) as err: | 172 except (IOError, OSError) as err: |
172 # deactivate this to avoid failed logging again | 173 # deactivate this to avoid failed logging again |
173 self._trackedevents.clear() | 174 self._trackedevents.clear() |
174 ui.debug('warning: cannot write to blackbox.log: %s\n' % | 175 ui.debug('warning: cannot write to blackbox.log: %s\n' % |