in src/lambda_functions/cw_custom_widget_python/lib/logger.py [0:0]
def get_logger(name):
"""
Get a configured logger.
Compatible with both the AWS Lambda runtime (root logger) and local execution
:param name: The name of the logger (most often __name__ of the calling module)
:return: The logger to use
"""
logger = None
# first case: running as a lambda function or in pytest with conftest
# second case: running a single test or locally under test
if len(logging.getLogger().handlers) > 0:
logger = logging.getLogger()
logger.setLevel(get_log_level())
# overrides
logging.getLogger("boto3").setLevel(logging.WARNING)
logging.getLogger("botocore").setLevel(logging.WARNING)
logging.getLogger("urllib3").setLevel(logging.WARNING)
else:
logging.basicConfig(
format=(
"%(asctime)s [%(levelname)s] " "%(filename)s:%(lineno)s:%(funcName)s(): %(message)s"
),
level=get_log_level(),
datefmt="%Y-%m-%d %H:%M:%S",
) # NOSONAR logger's config is safe here
logger = logging.getLogger(name)
return logger