Skip to content

Commit dc4b204

Browse files
committed
improv: turn log_level input case insensitive
1 parent 728e464 commit dc4b204

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

aws_lambda_powertools/logging/logger.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ def __init__(
119119
):
120120
self.service = service or os.getenv("POWERTOOLS_SERVICE_NAME") or "service_undefined"
121121
self.sampling_rate = sampling_rate or os.getenv("POWERTOOLS_LOGGER_SAMPLE_RATE") or 0.0
122-
self.log_level = level or os.getenv("LOG_LEVEL".upper()) or logging.INFO
122+
self.log_level = self._get_log_level(level)
123123
self.child = child
124124
self._handler = logging.StreamHandler(stream) if stream is not None else logging.StreamHandler(sys.stdout)
125125
self._default_log_keys = {"service": self.service, "sampling_rate": self.sampling_rate}
@@ -132,6 +132,13 @@ def __getattr__(self, name):
132132
# https://github.com/awslabs/aws-lambda-powertools-python/issues/97
133133
return getattr(self._logger, name)
134134

135+
def _get_log_level(self, level: str):
136+
""" Returns preferred log level set by the customer in upper case """
137+
log_level: str = level or os.getenv("LOG_LEVEL")
138+
log_level = log_level.upper() if log_level is not None else logging.INFO
139+
140+
return log_level
141+
135142
def _get_logger(self):
136143
""" Returns a Logger named {self.service}, or {self.service.filename} for child loggers"""
137144
logger_name = self.service

tests/functional/test_logger.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,3 +306,21 @@ def test_logger_child_not_set_returns_same_logger(stdout):
306306
assert id(logger_one) != id(logger_two)
307307
assert logger_one._logger is logger_two._logger
308308
assert logger_one.name is logger_two.name
309+
310+
311+
def test_logger_level_case_insensitive(stdout):
312+
# GIVEN a Loggers is initialized
313+
# WHEN log level is set as "info" instead of "INFO"
314+
logger = Logger(level="info")
315+
316+
# THEN we should correctly set log level as INFO
317+
assert logger.level == logging.INFO
318+
319+
320+
def test_logger_level_not_set(stdout):
321+
# GIVEN a Loggers is initialized
322+
# WHEN no log level was passed
323+
logger = Logger(level="info")
324+
325+
# THEN we should default to INFO
326+
assert logger.level == logging.INFO

0 commit comments

Comments
 (0)