Skip to content

Commit 5b37325

Browse files
author
Artem Krivonos
committed
inline set_log_level, add tests for logging config
1 parent 8e15600 commit 5b37325

File tree

2 files changed

+73
-6
lines changed

2 files changed

+73
-6
lines changed

awslambdaric/bootstrap.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -385,12 +385,8 @@ def __enter__(self):
385385
def __exit__(self, exc_type, exc_value, exc_tb):
386386
self.file.close()
387387

388-
def set_log_level(self, frame_type, log_level):
389-
mask = self.LEVEL_TO_MASK.get(log_level, self.DEFAULT_LEVEL_MASK)
390-
return frame_type | mask
391-
392388
def log(self, msg, log_level=logging.NOTSET, log_format=LambdaLogFormat.TEXT):
393-
frame_type = self.set_log_level(self.frame_type, log_level)
389+
frame_type = self.frame_type | self.LEVEL_TO_MASK.get(log_level, self.DEFAULT_LEVEL_MASK)
394390
frame_type = frame_type | log_format
395391

396392
encoded_msg = msg.encode("utf8")

tests/test_bootstrap.py

Lines changed: 72 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import importlib
66
import json
77
import logging
8+
import logging.config
89
import os
910
import re
1011
import tempfile
@@ -1354,7 +1355,6 @@ def test_log_level(self, mock_stderr, mock_stdout):
13541355
logger.debug("debug message")
13551356
logger.info("info message")
13561357

1357-
# print("some ", mock_stdout.getvalue())
13581358
data = json.loads(mock_stdout.getvalue())
13591359
data.pop("timestamp")
13601360

@@ -1369,6 +1369,77 @@ def test_log_level(self, mock_stderr, mock_stdout):
13691369
)
13701370
self.assertEqual(mock_stderr.getvalue(), "")
13711371

1372+
@patch("sys.stdout", new_callable=StringIO)
1373+
@patch("sys.stderr", new_callable=StringIO)
1374+
def test_set_log_level_manually(self, mock_stderr, mock_stdout):
1375+
logger = logging.getLogger("test.logger")
1376+
1377+
# Changing log level after `bootstrap.setup_logging`
1378+
logging.getLogger().setLevel(logging.FATAL)
1379+
1380+
logger.debug("debug message")
1381+
logger.info("info message")
1382+
logger.warning("warning message")
1383+
logger.error("error message")
1384+
logger.fatal("fatal message")
1385+
1386+
data = json.loads(mock_stdout.getvalue())
1387+
data.pop("timestamp")
1388+
1389+
self.assertEqual(
1390+
data,
1391+
{
1392+
"level": "FATAL",
1393+
"logger": "test.logger",
1394+
"message": "fatal message",
1395+
"requestId": "",
1396+
},
1397+
)
1398+
self.assertEqual(mock_stderr.getvalue(), "")
1399+
1400+
1401+
@patch("sys.stdout", new_callable=StringIO)
1402+
@patch("sys.stderr", new_callable=StringIO)
1403+
def test_set_log_level_with_dictConfig(self, mock_stderr, mock_stdout):
1404+
# Changing log level after `bootstrap.setup_logging`
1405+
logging.config.dictConfig(
1406+
{
1407+
"version": 1,
1408+
"disable_existing_loggers": False,
1409+
"formatters": {
1410+
"simple": {
1411+
"format": "%(levelname)-8s - %(message)s"
1412+
}
1413+
},
1414+
"handlers": {
1415+
"stdout": {
1416+
"class": "logging.StreamHandler",
1417+
"formatter": "simple",
1418+
},
1419+
},
1420+
"root": {
1421+
"level": "FATAL",
1422+
"handlers": [
1423+
"stdout",
1424+
]
1425+
}
1426+
}
1427+
)
1428+
1429+
logger = logging.getLogger("test.logger")
1430+
logger.debug("debug message")
1431+
logger.info("info message")
1432+
logger.warning("warning message")
1433+
logger.error("error message")
1434+
logger.fatal("fatal message")
1435+
1436+
data = mock_stderr.getvalue()
1437+
self.assertEqual(
1438+
data,
1439+
'FATAL - fatal message\n',
1440+
)
1441+
self.assertEqual(mock_stdout.getvalue(), "")
1442+
13721443

13731444
class TestBootstrapModule(unittest.TestCase):
13741445
@patch("awslambdaric.bootstrap.handle_event_request")

0 commit comments

Comments
 (0)