Skip to main content

Nanolib to enhance logging in aws lambda

Project description

https://gitlab.com/hadrien/aws_lambda_logging/badges/master/build.svg https://gitlab.com/hadrien/aws_lambda_logging/badges/master/coverage.svg?job=Run%20py.test

Better logging for aws lambda running on python runtime environment with a highly opinionated JSON formatting to ease parsing on any logging system.

Usage

import aws_lambda_logging


def handler(event, context):
    aws_lambda_logging.setup(level='DEBUG')
    ...

You can separately set the logging level for Boto (defaults to the same level):

import aws_lambda_logging


def handler(event, context):
    aws_lambda_logging.setup(level='DEBUG', boto_level='CRITICAL')
    ...

You can add keyword arguments to be logged each time, such as lambda request id.

import aws_lambda_logging


def handler(event, context):
    aws_lambda_logging.setup(level='DEBUG',
                             aws_request_id=context.get('aws_request_id'))
    log.debug('Just a try!')
    ...

It will output JSON formatted message:

{
    "level": "DEBUG",
    "timestamp": "2016-10-03 13:27:57,438",
    "apigw_request_id": "323fee86-896d-11e6-b7fd-2d914ea80962",
    "location": "root.handler:6",
    "message": "Just a try!"
}

You can input a JSON string:

log.debug('{"Details": [1,2,3]}')

It will output JSON formatted message with the JSON string embedded properly:

{
    "level": "DEBUG",
    "timestamp": "2016-10-03 13:27:57,438",
    "apigw_request_id": "323fee86-896d-11e6-b7fd-2d914ea80962",
    "location": "root.handler:6",
    "message": {
        "Details": [
            1,
            2,
            3
        ]
    }
}

You can input a dict:

log.debug({"Details": [1,2,3]})

It will output JSON formatted message with the dict values:

{
    "level": "DEBUG",
    "timestamp": "2016-10-03 13:27:57,438",
    "apigw_request_id": "323fee86-896d-11e6-b7fd-2d914ea80962",
    "location": "root.handler:6",
    "message": {
        "Details": [
            1,
            2,
            3
        ]
    }
}

Any values that can otherwise be serialisabled to JSON are coerced to strings. This behaviour can be changed by parsing a formatter function to the json_default keyword argument.

Project details


Download files

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

Files for aws-lambda-logging, version 0.1.1
Filename, size File type Python version Upload date Hashes
Filename, size aws_lambda_logging-0.1.1.tar.gz (3.8 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page