##// END OF EJS Templates
request-wrapper: show http method in summary log entry.
marcink -
r3430:71ecae09 default
parent child Browse files
Show More
@@ -1,60 +1,60 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2
2
3 # Copyright (C) 2016-2019 RhodeCode GmbH
3 # Copyright (C) 2016-2019 RhodeCode GmbH
4 #
4 #
5 # This program is free software: you can redistribute it and/or modify
5 # This program is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU Affero General Public License, version 3
6 # it under the terms of the GNU Affero General Public License, version 3
7 # (only), as published by the Free Software Foundation.
7 # (only), as published by the Free Software Foundation.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU Affero General Public License
14 # You should have received a copy of the GNU Affero General Public License
15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
16 #
16 #
17 # This program is dual-licensed. If you wish to learn more about the
17 # This program is dual-licensed. If you wish to learn more about the
18 # RhodeCode Enterprise Edition, including its added features, Support services,
18 # RhodeCode Enterprise Edition, including its added features, Support services,
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20
20
21
21
22 import time
22 import time
23 import logging
23 import logging
24
24
25
25
26 from rhodecode.lib.base import get_ip_addr, get_access_path, get_user_agent
26 from rhodecode.lib.base import get_ip_addr, get_access_path, get_user_agent
27 from rhodecode.lib.utils2 import safe_str
27 from rhodecode.lib.utils2 import safe_str
28
28
29
29
30 log = logging.getLogger(__name__)
30 log = logging.getLogger(__name__)
31
31
32
32
33 class RequestWrapperTween(object):
33 class RequestWrapperTween(object):
34 def __init__(self, handler, registry):
34 def __init__(self, handler, registry):
35 self.handler = handler
35 self.handler = handler
36 self.registry = registry
36 self.registry = registry
37
37
38 # one-time configuration code goes here
38 # one-time configuration code goes here
39
39
40 def __call__(self, request):
40 def __call__(self, request):
41 start = time.time()
41 start = time.time()
42 try:
42 try:
43 response = self.handler(request)
43 response = self.handler(request)
44 finally:
44 finally:
45 end = time.time()
45 end = time.time()
46 total = end - start
46 total = end - start
47 log.info(
47 log.info(
48 'IP: %s Request to %s time: %.3fs [%s]',
48 'IP: %s %s Request to %s time: %.3fs [%s]',
49 get_ip_addr(request.environ),
49 get_ip_addr(request.environ), request.environ.get('REQUEST_METHOD'),
50 safe_str(get_access_path(request.environ)), total,
50 safe_str(get_access_path(request.environ)), total,
51 get_user_agent(request. environ)
51 get_user_agent(request. environ)
52 )
52 )
53
53
54 return response
54 return response
55
55
56
56
57 def includeme(config):
57 def includeme(config):
58 config.add_tween(
58 config.add_tween(
59 'rhodecode.lib.middleware.request_wrapper.RequestWrapperTween',
59 'rhodecode.lib.middleware.request_wrapper.RequestWrapperTween',
60 ) No newline at end of file
60 )
General Comments 0
You need to be logged in to leave comments. Login now