def test_indent_type_error(self): logger_initial_config() logger = wrap_logger(logging.getLogger()) with self.assertLogs(level='ERROR') as cm: logger.error('Test') message = cm[0][0].msg self.assertIn( '"event": "Test", "trace": "", "span": "", "parent": "",' ' "level": "error", "service": "ras-frontstage"', message)
def test_success(self): os.environ['JSON_INDENT_LOGGING'] = '1' logger_initial_config() logger = wrap_logger(logging.getLogger()) with self.assertLogs(level='ERROR') as cm: logger.error('Test') message = cm[0][0].msg message_contents = '\n "event": "Test",\n "trace": "",\n "span": "",\n "parent": "",' \ '\n "level": "error",\n "service": "ras-frontstage"' self.assertIn(message_contents, message)
def create_app_object(): app = Flask(__name__) app.name = "ras-frontstage" # Load app config app_config = 'config.{}'.format(os.environ.get('APP_SETTINGS', 'Config')) app.config.from_object(app_config) # Zipkin zipkin = Zipkin(app=app, sample_rate=app.config.get("ZIPKIN_SAMPLE_RATE")) requestsdefaulter.default_headers(zipkin.create_http_headers_for_new_span) # Configure logger log_level = 'DEBUG' if app.config['DEBUG'] else None logger_initial_config(service_name='ras-frontstage', log_level=log_level) logger = wrap_logger(logging.getLogger(__name__)) logger.debug('App configuration set', config=app_config) # If deploying in cloudfoundry set config to use cf redis instance if cf.detected: logger.info('Cloudfoundry detected, setting service configurations') app.config['REDIS_HOST'] = cf.redis.credentials['host'] app.config['REDIS_PORT'] = cf.redis.credentials['port'] # If any required variables are not set abort launch for var in app.config['NON_DEFAULT_VARIABLES']: if not app.config[var]: raise MissingEnvironmentVariable(app, logger) app.url_map.strict_slashes = False app.jinja_env.filters['file_size_filter'] = file_size_filter app.jinja_env.filters['subject_filter'] = subject_filter @app.after_request def apply_headers(response): if request.path.startswith('/static/'): return response response.headers["X-Frame-Options"] = "DENY" for k, v in CACHE_HEADERS.items(): response.headers[k] = v return response return app
def create_app_object(): app = Flask(__name__) # Load app config app_config = "config.{}".format(os.environ.get("APP_SETTINGS", "Config")) app.config.from_object(app_config) app.name = "ras-frontstage" if not app.config["DEBUG"]: app.wsgi_app = GCPLoadBalancer(app.wsgi_app) # Configure logger logger_initial_config(log_level=app.config["LOGGING_LEVEL"]) logger = wrap_logger(logging.getLogger(__name__)) logger.debug("App configuration set", config=app_config) # If any required variables are not set abort launch for var in app.config["NON_DEFAULT_VARIABLES"]: if not app.config[var]: raise MissingEnvironmentVariable(app, logger) app.url_map.strict_slashes = False app.jinja_env.filters["file_size_filter"] = file_size_filter app.jinja_env.filters["subject_filter"] = subject_filter CSRFProtect(app) @app.after_request def apply_headers(response): if request.path.startswith("/static/"): return response response.headers["X-Frame-Options"] = "DENY" for k, v in CACHE_HEADERS.items(): response.headers[k] = v return response return app