Пример #1
0
def test_cloudwatch_context():

    stream = StringIO()
    cazoo_logger.config(stream)

    request_id = "abc-123"
    function_name = "bestest-ever-function"
    function_version = "brand-new"

    ctx = LambdaContext(request_id, function_name, function_version)
    event = {
        "account": "123456789012",
        "region": "us-east-2",
        "detail": {},
        "detail-type": "Scheduled Event",
        "source": "aws.events",
        "time": "2019-03-01T01:23:45Z",
        "id": "cdc73f9d-aea9-11e3-9d5a-835b769c0d9c",
        "resources": ["arn:aws:events:us-east-1:123456789012:rule/my-schedule"],
    }

    log = cazoo_logger.cloudwatch(event, ctx, service="best-service-ever")
    log.info("hello world")

    result = json.loads(stream.getvalue())

    assert result["context"] == {
        "request_id": request_id,
        "function": {
            "name": function_name,
            "version": function_version,
            "service": "best-service-ever",
        },
        "event": {"source": "aws.events", "name": "Scheduled Event", "id": event["id"]},
    }
Пример #2
0
def test_basic_fields():

    stream = StringIO()
    cazoo_logger.config(stream=stream)

    ctx = LambdaContext(request_id="abc123",
                        function_name="do-things",
                        function_version="0.1.2.3")

    logger = cazoo_logger.s3(event, ctx, service="woop")
    logger.info("Hello world")

    result = json.loads(stream.getvalue())

    assert result == {
        "msg": "Hello world",
        "level": "info",
        "context": {
            "request_id": "abc123",
            "function": {
                "name": "do-things",
                "version": "0.1.2.3",
                "service": "woop"
            },
            "sns": {
                "id": "66591d01-0241-5751-bb17-486e5a6dcf91",
                "topic": "arn:aws:sns:eu-west-1:476912836688:sftp_drop_topic",
                "type": "Notification",
                "subject": "Amazon S3 Notification",
            },
        },
    }
Пример #3
0
def test_type():
    stream = StringIO()
    cazoo_logger.config(stream)

    logger = cazoo_logger.empty()
    logger.info("hello", type="thing-happened")
    result = json.loads(stream.getvalue())

    assert result["type"] == "thing-happened"
Пример #4
0
def test_standard_interpolation():
    stream = StringIO()
    cazoo_logger.config(stream)

    logger = cazoo_logger.empty()
    logger.info("Hello %s today is a %s day", "world", "good")
    result = json.loads(stream.getvalue())

    assert result["msg"] == "Hello world today is a good day"
Пример #5
0
    def handler(event, context, logger):
        cazoo_logger.config(stream)
        logger.info(
            "Logging a test message",
            extra={
                "vrm": "LP12 KZM",
                "email_address": "*****@*****.**"
            },
        )

        return "Hello world"
Пример #6
0
def test_data():

    stream = StringIO()
    cazoo_logger.config(stream)

    logger = cazoo_logger.empty()
    logger.with_data(
        sql={"query": "select * from foo where bar = ?", "parameters": [123]}
    ).info("Hello world")

    result = json.loads(stream.getvalue())

    assert result["data"]["sql"]["query"] == "select * from foo where bar = ?"
    assert result["data"]["sql"]["parameters"] == [123]
Пример #7
0
def test_add_log_level():
    add_logging_level("TRACE", 25)

    stream = StringIO()
    cazoo_logger.config(stream)
    logger = cazoo_logger.empty()

    logger.trace("This is a new level log")
    result = json.loads(stream.getvalue())
    print(json.dumps(result))

    # CLEAN UP THE NEW LOG LEVEL SO IT DOESN'T LEAK INTO OTHER TESTS
    delattr(logging, "TRACE")

    assert result["level"] == "trace"
Пример #8
0
def test_exceptions():
    stream = StringIO()
    cazoo_logger.config(stream)

    logger = cazoo_logger.empty()

    try:
        raise ValueError("What even IS that??")
    except:  # noqa: E722
        logger.exception("Uh oh")

    result = json.loads(stream.getvalue())

    assert result["level"] == "error"
    assert result["data"]["error"]["name"] == "ValueError"
    assert result["data"]["error"]["message"] == "What even IS that??"

    assert result["msg"] == "Uh oh"
Пример #9
0
def test_new_log_level_not_logged_if_logging_turned_too_high():
    # Given that the default log level is INFO
    os.environ["LOG_LEVEL"] = "INFO"
    # When a new logging level with a lower value is added
    add_logging_level("TRACE", 15)

    stream = StringIO()
    cazoo_logger.config(stream, level=os.environ["LOG_LEVEL"])
    logger = cazoo_logger.empty()

    # And we log to this new level
    logger.trace("This is a new level log")

    # Then nothing is logged
    result = stream.getvalue()

    # CLEAN UP THE NEW LOG LEVEL SO IT DOESN'T LEAK INTO OTHER TESTS
    delattr(logging, "TRACE")

    assert result == ""
Пример #10
0
 def handler(event, context, logger):
     cazoo_logger.config(stream, level=os.environ["LOG_LEVEL"])
     logger.trace("Logging a test message", extra={"vrm": "LP12 KZM"})
     return "Hello world"
Пример #11
0
    def handler(event, context, logger):
        cazoo_logger.config(stream)
        logger.info("Logging a test message", extra={"vrm": "LP12 KZM"})

        return "Hello world"