def stackdriver_log(sender, payload={}): if settings.GOOGLE_REQUEST_LOGGING is False: return if not hasattr(local, '_gcp_logger'): from google.cloud.logging import Client as LoggingClient client = LoggingClient() logger_name = '%s-api' % settings.APP_NAME local._gcp_logger = client.logger(logger_name) local._gcp_logger.log_struct(payload)
def generate_request_log(resp, took): """Collect data about the request for analytical purposes.""" # Move this down once we have multiple collectors. if settings.GOOGLE_REQUEST_LOGGING is False: return payload = { "v": __version__, "method": request.method, "endpoint": request.endpoint, "referrer": request.referrer, "ip": _get_remote_ip(), "ua": str(request.user_agent), "time": datetime.utcnow().isoformat(), "session_id": getattr(request, "_session_id", None), "locale": getattr(request, "_app_locale", None), "took": took, "url": request.url, "path": request.full_path, "status": resp.status_code, } if hasattr(request, "authz"): payload["role_id"] = request.authz.id tags = dict(request.view_args or ()) if hasattr(request, "_log_tags"): tags.update(request._log_tags) for tag, value in tags.items(): if value is not None and tag not in payload: payload[tag] = value # log.info("Log: %s", pformat(payload)) if not hasattr(local, "_gcp_logger"): from google.cloud.logging import Client client = Client() logger_name = "%s-api" % settings.APP_NAME local._gcp_logger = client.logger(logger_name) local._gcp_logger.log_struct(payload)
def generate_request_log(resp, took): """Collect data about the request for analytical purposes.""" # Move this down once we have multiple collectors. if settings.GOOGLE_REQUEST_LOGGING is False: return payload = { 'v': __version__, 'method': request.method, 'endpoint': request.endpoint, 'referrer': request.referrer, 'ip': _get_remote_ip(), 'ua': str(request.user_agent), 'time': datetime.utcnow().isoformat(), 'session_id': getattr(request, '_session_id', None), 'locale': getattr(request, '_app_locale', None), 'took': took, 'url': request.url, 'path': request.full_path, 'status': resp.status_code } if hasattr(request, 'authz'): payload['role_id'] = request.authz.id tags = dict(request.view_args or ()) if hasattr(request, '_log_tags'): tags.update(request._log_tags) for tag, value in tags.items(): if value is not None and tag not in payload: payload[tag] = value # log.info("Log: %s", pformat(payload)) if not hasattr(local, '_gcp_logger'): from google.cloud.logging import Client client = Client() logger_name = '%s-api' % settings.APP_NAME local._gcp_logger = client.logger(logger_name) local._gcp_logger.log_struct(payload)
# Copyright 2018 Google Inc # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from google.cloud.logging import Client from core.app_data import SA_DATA, SA_FILE if SA_DATA.get('private_key', ''): client = Client.from_service_account_json(SA_FILE) else: client = Client() logger_name = 'crmintapplogger' logger = client.logger(logger_name)