Show More
@@ -0,0 +1,60 b'' | |||
|
1 | # RhodeCode VCSServer provides access to different vcs backends via network. | |
|
2 | # Copyright (C) 2014-2017 RodeCode GmbH | |
|
3 | # | |
|
4 | # This program is free software; you can redistribute it and/or modify | |
|
5 | # it under the terms of the GNU General Public License as published by | |
|
6 | # the Free Software Foundation; either version 3 of the License, or | |
|
7 | # (at your option) any later version. | |
|
8 | # | |
|
9 | # This program is distributed in the hope that it will be useful, | |
|
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
|
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
|
12 | # GNU General Public License for more details. | |
|
13 | # | |
|
14 | # You should have received a copy of the GNU General Public License | |
|
15 | # along with this program; if not, write to the Free Software Foundation, | |
|
16 | # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |
|
17 | ||
|
18 | ||
|
19 | ||
|
20 | import time | |
|
21 | import logging | |
|
22 | ||
|
23 | ||
|
24 | from vcsserver.utils import safe_str | |
|
25 | ||
|
26 | ||
|
27 | log = logging.getLogger(__name__) | |
|
28 | ||
|
29 | ||
|
30 | def get_access_path(request): | |
|
31 | environ = request.environ | |
|
32 | return environ.get('PATH_INFO') | |
|
33 | ||
|
34 | ||
|
35 | class RequestWrapperTween(object): | |
|
36 | def __init__(self, handler, registry): | |
|
37 | self.handler = handler | |
|
38 | self.registry = registry | |
|
39 | ||
|
40 | # one-time configuration code goes here | |
|
41 | ||
|
42 | def __call__(self, request): | |
|
43 | start = time.time() | |
|
44 | try: | |
|
45 | response = self.handler(request) | |
|
46 | finally: | |
|
47 | end = time.time() | |
|
48 | ||
|
49 | log.info('IP: %s Request to %s time: %.3fs' % ( | |
|
50 | '127.0.0.1', | |
|
51 | safe_str(get_access_path(request)), end - start) | |
|
52 | ) | |
|
53 | ||
|
54 | return response | |
|
55 | ||
|
56 | ||
|
57 | def includeme(config): | |
|
58 | config.add_tween( | |
|
59 | 'vcsserver.tweens.RequestWrapperTween', | |
|
60 | ) |
@@ -216,6 +216,10 b' class HTTPApplication(object):' | |||
|
216 | 216 | self.config.add_view( |
|
217 | 217 | self.general_error_handler, context=Exception) |
|
218 | 218 | |
|
219 | self.config.add_tween( | |
|
220 | 'vcsserver.tweens.RequestWrapperTween', | |
|
221 | ) | |
|
222 | ||
|
219 | 223 | def wsgi_app(self): |
|
220 | 224 | return self.config.make_wsgi_app() |
|
221 | 225 | |
@@ -234,6 +238,7 b' class HTTPApplication(object):' | |||
|
234 | 238 | pass |
|
235 | 239 | args.insert(0, wire) |
|
236 | 240 | |
|
241 | log.debug('method called:%s with kwargs:%s', method, kwargs) | |
|
237 | 242 | try: |
|
238 | 243 | resp = getattr(remote, method)(*args, **kwargs) |
|
239 | 244 | except Exception as e: |
General Comments 0
You need to be logged in to leave comments.
Login now