def test_package_logger_format(stdout, capsys): set_package_logger(stream=stdout, formatter=JsonFormatter(formatter="test")) Tracer(disabled=True) output = json.loads(stdout.getvalue().split("\n")[0]) assert "test" in output["formatter"]
def test_package_logger(capsys): set_package_logger() Tracer(disabled=True) output = capsys.readouterr() assert "Tracing has been disabled" in output.out
def test_package_logger_stream(stdout): # GIVEN package logger "aws_lambda_powertools" is explicitly set with no params set_package_logger(stream=stdout) # WHEN Tracer is initialized in disabled mode Tracer(disabled=True) # THEN Tracer debug log statement should be logged output = stdout.getvalue() logger = logging.getLogger("aws_lambda_powertools") assert "Tracing has been disabled" in output assert logger.level == logging.DEBUG
def test_package_logger_format(capsys): # GIVEN package logger "aws_lambda_powertools" is explicitly # with a custom formatter formatter = logging.Formatter("message=%(message)s") set_package_logger(formatter=formatter) # WHEN Tracer is initialized in disabled mode Tracer(disabled=True) # THEN Tracer debug log statement should be logged using `message=` format output = capsys.readouterr().out logger = logging.getLogger("aws_lambda_powertools") assert "message=" in output assert logger.level == logging.DEBUG
import json import os import boto3 import botocore.exceptions from aws_lambda_powertools import Logger, Tracer from aws_lambda_powertools.logging.logger import set_package_logger from functools import wraps set_package_logger() tracer = Tracer() logger = Logger() s3_client = boto3.client('s3') s3_bucket = os.getenv("RESOURCE_BUCKET_NAME") or "lessa-twitch-sample" s3_key = "airtravel.csv" # def dummy_decorator(fn): # logger.info(f"Decorating {fn}") # @wraps(fn) # def decorated(*args, **kwargs): # logger.info("Calling decorated function...") # ret = fn(*args, **kwargs) # return ret # return decorated # @tracer.capture_method # @dummy_decorator def load_file_from_s3(bucket_name, key):
import asyncio import json import aioboto3 import aiohttp import requests from aws_lambda_powertools import Logger, Metrics, Tracer, single_metric from aws_lambda_powertools.logging.logger import set_package_logger from aws_lambda_powertools.metrics import MetricUnit from aws_lambda_powertools.middleware_factory import lambda_handler_decorator from aws_lambda_powertools.tracing import aiohttp_trace_config set_package_logger() # Enable package diagnostics (DEBUG log) # tracer = Tracer() # patches all available modules # noqa: E800 tracer = Tracer(patch_modules=( "aioboto3", "boto3", "requests")) # ~90-100ms faster in perf depending on set of libs logger = Logger() metrics = Metrics() _cold_start = True metrics.add_dimension(name="operation", value="example") # added at cold start only async def aioboto_task(): async with aioboto3.client("sts") as sts: account = await sts.get_caller_identity()