Skip to content

Commit 7fd2fab

Browse files
author
Artem Krivonos
committed
Use AWS_LAMBDA_LOG_LEVEL env var to set log level for text format
1 parent 6fbad51 commit 7fd2fab

File tree

3 files changed

+24
-14
lines changed

3 files changed

+24
-14
lines changed

awslambdaric/bootstrap.py

+7-5
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,16 @@
1919
_JSON_FRAME_TYPES,
2020
JsonFormatter,
2121
LogFormat,
22+
_get_log_level_from_env_var,
2223
)
2324
from .lambda_runtime_marshaller import to_json
2425

2526
ERROR_LOG_LINE_TERMINATE = "\r"
2627
ERROR_LOG_IDENT = "\u00a0" # NO-BREAK SPACE U+00A0
2728
_AWS_LAMBDA_LOG_FORMAT = LogFormat.from_str(os.environ.get("AWS_LAMBDA_LOG_FORMAT"))
28-
_AWS_LAMBDA_LOG_LEVEL = os.environ.get("AWS_LAMBDA_LOG_LEVEL", "").upper()
29+
_AWS_LAMBDA_LOG_LEVEL = _get_log_level_from_env_var(
30+
os.environ.get("AWS_LAMBDA_LOG_LEVEL")
31+
)
2932

3033

3134
def _get_handler(handler):
@@ -419,10 +422,6 @@ def _setup_logging(log_format, log_level, log_sink):
419422
logger_handler = LambdaLoggerHandler(log_sink)
420423
if log_format == LogFormat.JSON:
421424
logger_handler.setFormatter(JsonFormatter())
422-
423-
logging.addLevelName(logging.DEBUG, "TRACE")
424-
if log_level in logging._nameToLevel:
425-
logger.setLevel(log_level)
426425
else:
427426
logger_handler.setFormatter(
428427
logging.Formatter(
@@ -431,6 +430,9 @@ def _setup_logging(log_format, log_level, log_sink):
431430
)
432431
)
433432

433+
if log_level in logging._nameToLevel:
434+
logger.setLevel(log_level)
435+
434436
logger_handler.addFilter(LambdaLoggerFilter())
435437
logger.addHandler(logger_handler)
436438

awslambdaric/lambda_runtime_log_utils.py

+4
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ def from_str(cls, value: str):
4545
return cls.TEXT.value
4646

4747

48+
def _get_log_level_from_env_var(log_level):
49+
return {None: "", "TRACE": "DEBUG"}.get(log_level, log_level).upper()
50+
51+
4852
_JSON_FRAME_TYPES = {
4953
logging.NOTSET: 0xA55A0002.to_bytes(4, "big"),
5054
logging.DEBUG: 0xA55A000A.to_bytes(4, "big"),

tests/test_bootstrap.py

+13-9
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
import awslambdaric.bootstrap as bootstrap
2020
from awslambdaric.lambda_runtime_exception import FaultException
21-
from awslambdaric.lambda_runtime_log_utils import LogFormat
21+
from awslambdaric.lambda_runtime_log_utils import LogFormat, _get_log_level_from_env_var
2222
from awslambdaric.lambda_runtime_marshaller import LambdaMarshaller
2323

2424

@@ -1180,13 +1180,13 @@ def test_log_level(self) -> None:
11801180
(LogFormat.JSON, "ERROR", logging.ERROR),
11811181
(LogFormat.JSON, "FATAL", logging.CRITICAL),
11821182
# Log level is set only for Json format
1183-
(LogFormat.TEXT, "TRACE", logging.NOTSET),
1184-
(LogFormat.TEXT, "DEBUG", logging.NOTSET),
1185-
(LogFormat.TEXT, "INFO", logging.NOTSET),
1186-
(LogFormat.TEXT, "WARN", logging.NOTSET),
1187-
(LogFormat.TEXT, "ERROR", logging.NOTSET),
1188-
(LogFormat.TEXT, "FATAL", logging.NOTSET),
1189-
("Unknown format", "INFO", logging.NOTSET),
1183+
(LogFormat.TEXT, "TRACE", logging.DEBUG),
1184+
(LogFormat.TEXT, "DEBUG", logging.DEBUG),
1185+
(LogFormat.TEXT, "INFO", logging.INFO),
1186+
(LogFormat.TEXT, "WARN", logging.WARN),
1187+
(LogFormat.TEXT, "ERROR", logging.ERROR),
1188+
(LogFormat.TEXT, "FATAL", logging.CRITICAL),
1189+
("Unknown format", "INFO", logging.INFO),
11901190
# if level is unknown fall back to default
11911191
(LogFormat.JSON, "Unknown level", logging.NOTSET),
11921192
]
@@ -1196,7 +1196,11 @@ def test_log_level(self) -> None:
11961196
logging.getLogger().handlers.clear()
11971197
logging.getLogger().level = logging.NOTSET
11981198

1199-
bootstrap._setup_logging(fmt, log_level, bootstrap.StandardLogSink())
1199+
bootstrap._setup_logging(
1200+
fmt,
1201+
_get_log_level_from_env_var(log_level),
1202+
bootstrap.StandardLogSink(),
1203+
)
12001204

12011205
self.assertEqual(expected_level, logging.getLogger().level)
12021206

0 commit comments

Comments
 (0)