Skip to content

Commit e2846f8

Browse files
json logging test passing
1 parent d81adde commit e2846f8

2 files changed

Lines changed: 13 additions & 16 deletions

File tree

src/nypl_py_utils/functions/log_helper.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
'critical': logging.CRITICAL
1313
}
1414

15+
1516
# Configure structlog to be machine-readable first and foremost
1617
# while still making it easy for humans to parse
1718
# End result (without additional bindings) is JSON like this:
@@ -35,7 +36,8 @@ def get_structlog(module):
3536

3637
return structlog.get_logger(module)
3738

38-
def standard_logger (module):
39+
40+
def standard_logger(module):
3941
logger = logging.getLogger(module)
4042
if logger.hasHandlers():
4143
logger.handlers = []
@@ -54,8 +56,9 @@ def standard_logger (module):
5456
logger.addHandler(console_log)
5557
return logger
5658

59+
5760
def create_log(module, json=False):
58-
if(json):
61+
if (json):
5962
return get_structlog(module)
6063
else:
6164
return standard_logger(module)

tests/test_log_helper.py

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1+
import json
12
import logging
23
import os
34
import time
4-
import pytest
55

66
import structlog
77
from structlog.testing import ReturnLogger
@@ -12,19 +12,14 @@
1212

1313
@freeze_time('2023-01-01 19:00:00')
1414
class TestLogHelper:
15-
@pytest.fixture
16-
def mock_logger(self, mocker):
17-
mocker.patch('src.nypl_py_utils.functions.log_helper.structlog.get_logger', return_value=ReturnLogger)
18-
19-
def test_json_logging(self):
15+
def test_json_logging(self, capsys):
2016
logger = create_log('test_log', json=True)
21-
log = logger.info('testtt', some="json")
22-
print('capture_logs', log)
23-
assert False
24-
# assert log.get("message") == 'test'
25-
# assert log.get("some") == 'json'
26-
# assert log.get('level') == 'info'
27-
# assert log.get('timestamp') == '2023-01-01 19:00:00Z'
17+
logger.info('test', some="json")
18+
output = json.loads(capsys.readouterr().out)
19+
assert output.get("message") == 'test'
20+
assert output.get("some") == 'json'
21+
assert output.get('level') == 'info'
22+
assert output.get('timestamp') == '2023-01-01T19:00:00Z'
2823

2924
def test_default_logging(self, caplog):
3025
logger = create_log('test_log')
@@ -35,7 +30,6 @@ def test_default_logging(self, caplog):
3530
# freeze_time changes the utc time, while the logger uses local time by
3631
# default, so force the logger to use utc time
3732
logger.handlers[0].formatter.converter = time.gmtime
38-
print(caplog.records)
3933
assert len(caplog.records) == 1
4034
assert logger.handlers[0].format(caplog.records[0]) == \
4135
'2023-01-01 19:00:00,000 | test_log | INFO: Test info message'

0 commit comments

Comments
 (0)