66import json_logging .framework
77from json_logging import JSONLogWebFormatter
88from json_logging .framework_base import AppRequestInstrumentationConfigurator , RequestAdapter , ResponseAdapter
9+ from json_logging .util import is_not_match_any_pattern
910
1011
1112def is_connexion_present ():
@@ -30,7 +31,7 @@ def is_connexion_present():
3031
3132
3233class ConnexionAppRequestInstrumentationConfigurator (AppRequestInstrumentationConfigurator ):
33- def config (self , app ):
34+ def config (self , app , exclude_url_patterns = [] ):
3435 if not is_connexion_present ():
3536 raise RuntimeError ("connexion is not available in system runtime" )
3637 from flask .app import Flask
@@ -45,18 +46,19 @@ def config(self, app):
4546 # noinspection PyAttributeOutsideInit
4647 self .request_logger = logging .getLogger ('connexion-request-logger' )
4748
48-
4949 from flask import g
5050
5151 @app .app .before_request
5252 def before_request ():
53- g .request_info = json_logging .RequestInfo (_current_request )
53+ if is_not_match_any_pattern (_current_request .path , exclude_url_patterns ):
54+ g .request_info = json_logging .RequestInfo (_current_request )
5455
5556 @app .app .after_request
5657 def after_request (response ):
57- request_info = g .request_info
58- request_info .update_response_status (response )
59- self .request_logger .info ("" , extra = {'request_info' : request_info })
58+ if hasattr (g , 'request_info' ):
59+ request_info = g .request_info
60+ request_info .update_response_status (response )
61+ self .request_logger .info ("" , extra = {'request_info' : request_info })
6062 return response
6163
6264
0 commit comments