def test_with_json_message(root_logger, logger, stdout): setup("DEBUG", another="value") msg = {"x": "isx"} logger.critical(json.dumps(msg)) log_dict = json.loads(stdout.getvalue()) assert msg == log_dict["message"]
def test_logging_exception_traceback(root_logger, logger, stdout): setup("DEBUG", request_id="request id!", another="value") try: raise Exception("Boom") except Exception: logger.exception("This is a test") log_dict = json.loads(stdout.getvalue()) check_log_dict(log_dict) assert "exception" in log_dict
def test_with_unserialisable_value_in_message(root_logger, logger, stdout): setup("DEBUG", another="value") class X: pass msg = {"x": X()} logger.critical(msg) log_dict = json.loads(stdout.getvalue()) assert log_dict["message"]["x"].startswith("<")
def test_setup_with_valid_log_levels(root_logger, logger, stdout, level): setup(level, request_id="request id!", another="value") logger.critical("This is a test") log_dict = json.loads(stdout.getvalue()) check_log_dict(log_dict) assert "CRITICAL" == log_dict["level"] assert "This is a test" == log_dict["message"] assert "request id!" == log_dict["request_id"] assert "exception" not in log_dict
def test_setup_with_bad_level_does_not_fail(): setup("DBGG", request_id="request id!", another="value")
def test_setup_with_invalid_log_level(root_logger, logger, stdout): setup("not a valid log level") # writes a log event log_dict = json.loads(stdout.getvalue()) check_log_dict(log_dict)