Skip to main content

Wrapper around Google Cloud Platform (GCP) logging library to simplify creation of traced logs.

Project description

GitHub GitHub Workflow Status (with branch) Coverage PyPI - Downloads

Introduction

This project provides easy to use wrapper around the Google Cloud Platform logging library to simplify creation of the traced logs.

Quick Start

from surquest.GCP.logger import Logger

logger = Logger()
logger.log(
    severity="INFO",
    msg="This is a test message",           # log message
    **{                                     # context information as KWARGS
        "key1": "value1",
        "key2": "value2"
    }
)

# Alternatively you can set the severity via the method name
logger.debug(msg="This is a DEBUG message")
logger.info(msg="This is a INFO message")
logger.warning(msg="This is a WARNING message")
logger.error(msg="This is a ERROR message")
logger.critical(msg="This is a CRITICAL message")

FastAPI integration

Following example shows how to integrate the Tracer class with FastAPI endpoints:

from surquest.GCP.logger import Logger
import requests
from fastapi import FastAPI, Depends, Query, Path

app = FastAPI()

@app.get("/exchange/currencies/{base}/{quote}")
async def exchange(
        base: str = Path(..., description="Base currency"),
        quote: str = Path(..., description="Quote currency"),
        amount: float = Query(..., gt=0, description="Amount to exchange"),
        logger: Logger = Depends(Logger)
):
    
    # get exchange rate from external API
    response = requests.get(
            f"https://api.exchangeratesapi.io/v1/latest?base={base}&symbols={quote}",
            params={
                "base": base,
                "symbols": quote,
                "access_key": "<your_api_key>" # please set your own API key
            }
        ).json()["rates"][quote]
    
    if 200 <= response.status_code < 300:
        
        exchange_rate = response.json()["rates"][quote]
        logger.info(
            msg="Retrieval of Exchange rates finished successfully",
            **{
                "currencies": {
                    "base": base,
                    "quote": quote
                },
                "exchangeRate": exchange_rate
            }
        )
        
    else:
        
        logger.error(
            msg="Failed to retrieve exchange rate",
            base=base,
            quote=quote,
            amount=amount,
            response=response
        )
        
        return {
            "info": "Failed to retrieve exchange rate",
            "error": response.text
        }
    
    result = amount * exchange_rate
        
    return {
        "currencies": {
            "base": base,
            "quote": quote
        },
        "amount": {
            "base": amount,
            "quote": result
        }
    }

Local development

You are more than welcome to contribute to this project. To make your start easier we have prepared a docker image with all the necessary tools to run it as interpreter for Pycharm or to run tests.

Build docker image

docker build `
     --tag surquest/gcp/logger `
     --file package.base.dockerfile `
     --target test .

Run tests

docker run --rm -it `
 -v "${pwd}:/opt/project" `
 -e "GOOGLE_APPLICATION_CREDENTIALS=/opt/project/credentials/keyfile.json" `
 -w "/opt/project/test" `
 surquest/gcp/logger pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

surquest_gcp_logger-0.0.1rc5.tar.gz (8.5 kB view details)

Uploaded Source

Built Distribution

surquest_gcp_logger-0.0.1rc5-py2.py3-none-any.whl (5.7 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file surquest_gcp_logger-0.0.1rc5.tar.gz.

File metadata

File hashes

Hashes for surquest_gcp_logger-0.0.1rc5.tar.gz
Algorithm Hash digest
SHA256 e7b7a67d34bfbd67fbfcc9d920d8fd369414e69b256434f91f9b1092460f8c98
MD5 6933fd3aeab0bab7f1aaf1085875e928
BLAKE2b-256 66c8fbccf71106fb19fcf9ac5a9dc056d818cbe1d80532d78cb7c00c21daf515

See more details on using hashes here.

File details

Details for the file surquest_gcp_logger-0.0.1rc5-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for surquest_gcp_logger-0.0.1rc5-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 95cf07130cf539d47e91f045bb961cf40cdfed4f656e0b6db353a74f9868f08a
MD5 e49da5308f56195fd05c3388ba060b7d
BLAKE2b-256 8461497f66906ab215774b34a3b1276a2a75cc5ae38019f15a563dd49b579c4c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page