Show More
@@ -73,6 +73,40 configitem('blackbox', 'logsource', | |||
|
73 | 73 | |
|
74 | 74 | lastui = None |
|
75 | 75 | |
|
76 | def _openlogfile(ui, vfs): | |
|
77 | def rotate(oldpath, newpath): | |
|
78 | try: | |
|
79 | vfs.unlink(newpath) | |
|
80 | except OSError as err: | |
|
81 | if err.errno != errno.ENOENT: | |
|
82 | ui.debug("warning: cannot remove '%s': %s\n" % | |
|
83 | (newpath, err.strerror)) | |
|
84 | try: | |
|
85 | if newpath: | |
|
86 | vfs.rename(oldpath, newpath) | |
|
87 | except OSError as err: | |
|
88 | if err.errno != errno.ENOENT: | |
|
89 | ui.debug("warning: cannot rename '%s' to '%s': %s\n" % | |
|
90 | (newpath, oldpath, err.strerror)) | |
|
91 | ||
|
92 | maxsize = ui.configbytes('blackbox', 'maxsize') | |
|
93 | name = 'blackbox.log' | |
|
94 | if maxsize > 0: | |
|
95 | try: | |
|
96 | st = vfs.stat(name) | |
|
97 | except OSError: | |
|
98 | pass | |
|
99 | else: | |
|
100 | if st.st_size >= maxsize: | |
|
101 | path = vfs.join(name) | |
|
102 | maxfiles = ui.configint('blackbox', 'maxfiles', 7) | |
|
103 | for i in xrange(maxfiles - 1, 1, -1): | |
|
104 | rotate(oldpath='%s.%d' % (path, i - 1), | |
|
105 | newpath='%s.%d' % (path, i)) | |
|
106 | rotate(oldpath=path, | |
|
107 | newpath=maxfiles > 0 and path + '.1') | |
|
108 | return vfs(name, 'a') | |
|
109 | ||
|
76 | 110 | def wrapui(ui): |
|
77 | 111 | class blackboxui(ui.__class__): |
|
78 | 112 | @property |
@@ -89,40 +123,6 def wrapui(ui): | |||
|
89 | 123 | def track(self): |
|
90 | 124 | return self.configlist('blackbox', 'track', ['*']) |
|
91 | 125 | |
|
92 | def _openlogfile(self): | |
|
93 | def rotate(oldpath, newpath): | |
|
94 | try: | |
|
95 | self._bbvfs.unlink(newpath) | |
|
96 | except OSError as err: | |
|
97 | if err.errno != errno.ENOENT: | |
|
98 | self.debug("warning: cannot remove '%s': %s\n" % | |
|
99 | (newpath, err.strerror)) | |
|
100 | try: | |
|
101 | if newpath: | |
|
102 | self._bbvfs.rename(oldpath, newpath) | |
|
103 | except OSError as err: | |
|
104 | if err.errno != errno.ENOENT: | |
|
105 | self.debug("warning: cannot rename '%s' to '%s': %s\n" % | |
|
106 | (newpath, oldpath, err.strerror)) | |
|
107 | ||
|
108 | maxsize = self.configbytes('blackbox', 'maxsize') | |
|
109 | name = 'blackbox.log' | |
|
110 | if maxsize > 0: | |
|
111 | try: | |
|
112 | st = self._bbvfs.stat(name) | |
|
113 | except OSError: | |
|
114 | pass | |
|
115 | else: | |
|
116 | if st.st_size >= maxsize: | |
|
117 | path = self._bbvfs.join(name) | |
|
118 | maxfiles = self.configint('blackbox', 'maxfiles', 7) | |
|
119 | for i in xrange(maxfiles - 1, 1, -1): | |
|
120 | rotate(oldpath='%s.%d' % (path, i - 1), | |
|
121 | newpath='%s.%d' % (path, i)) | |
|
122 | rotate(oldpath=path, | |
|
123 | newpath=maxfiles > 0 and path + '.1') | |
|
124 | return self._bbvfs(name, 'a') | |
|
125 | ||
|
126 | 126 | def log(self, event, *msg, **opts): |
|
127 | 127 | global lastui |
|
128 | 128 | super(blackboxui, self).log(event, *msg, **opts) |
@@ -172,7 +172,7 def wrapui(ui): | |||
|
172 | 172 | try: |
|
173 | 173 | fmt = '%s %s @%s%s (%s)%s> %s' |
|
174 | 174 | args = (date, user, rev, changed, pid, src, formattedmsg) |
|
175 |
with |
|
|
175 | with _openlogfile(ui, vfs) as fp: | |
|
176 | 176 | fp.write(fmt % args) |
|
177 | 177 | except (IOError, OSError) as err: |
|
178 | 178 | self.debug('warning: cannot write to blackbox.log: %s\n' % |
General Comments 0
You need to be logged in to leave comments.
Login now