python-lambo

Simple and visually pleasing logger for AWS Lambda

MIT License

Downloads
261
Stars
2
Committers
1

Lambo

Simple and visually pleasing logger for AWS Lambda that prepends your log lines with the log level and the AWS request ID, making searching CLoudWatch for event logs a cinch!

Before installing lambo…

START RequestId: 03cf3256-f2e1-461c-a4a0-60eb91ac8149 Version: $LATEST
This log line was generated with ``print()``
END RequestId: 03cf3256-f2e1-461c-a4a0-60eb91ac8149
REPORT RequestId: 03cf3256-f2e1-461c-a4a0-60eb91ac8149	Duration: 3000.00 ms	Billed Duration: 3000 ms	Memory Size: 128 MB	Max Memory Used: 128 MB

After installing lambo…

START RequestId: 03cf3256-f2e1-461c-a4a0-60eb91ac8149 Version: $LATEST
DEBUG RequestId: 03cf3256-f2e1-461c-a4a0-60eb91ac8149 This log line was generated with ``logger.debug()``
INFO RequestId: 03cf3256-f2e1-461c-a4a0-60eb91ac8149 This log line was generated with ``logger.info()``
WARNING RequestId: 03cf3256-f2e1-461c-a4a0-60eb91ac8149 This log line was generated with ``logger.warning()``
ERROR RequestId: 03cf3256-f2e1-461c-a4a0-60eb91ac8149 This log line was generated with ``logger.error()``
END RequestId: 03cf3256-f2e1-461c-a4a0-60eb91ac8149
REPORT RequestId: 03cf3256-f2e1-461c-a4a0-60eb91ac8149	Duration: 3000.00 ms	Billed Duration: 3000 ms	Memory Size: 128 MB	Max Memory Used: 128 MB

Why not use aws_lambda_powertools? If you are already building your Lambda package with external dependencies well then you could probably use that great tool by AWS.

But if you are looking for a lighter-weight solution with no external dependencies, then this might help you.

Installation

pip install lambo

Usage

Create a logger using the getLogger() method and bind it to your Lambda handler functions with the @bind decorator.

import lambo

logger = lambo.getLogger('my-logger')


@logger.bind
def handler(event, context):
    logger.info('HELLO!')
    return {'ok': True}

Or, if brevity is your thing, import the built-in logger:

from lambo import logger


@logger.bind
def handler(event, context):
    logger.info('HELLO!')
    return {'ok': True}

Customization

The default log level for lambo loggers is INFO and the default format string is %(levelname)s %(awsRequestId)s %(message)s, where awsRequestId is extracted from the Lambda execution context.

You can override these values at runtime…

import lambo

logger = lambo.getLogger('my-logger', 'DEBUG', '%(message)s')

Or with ENV variables…

export LAMBO_LOG_LEVEL=DEBUG
export LAMBO_LOG_FORMAT="%(message)"