Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
# 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)