跳转到主要内容

针对AWS Lambda的超级有见解的结构化日志记录器

项目描述

简介,其中包含意见

Cazoo-Logger是为Python在AWS Lambda上使用的深度有见解的结构化日志记录器。

Cazoo-Logger对aws_lambda_logger有一定的借鉴,后者较少有见解,可能更适合您的特定用例。去看看。

基本用法

Cazoo Logger模块公开了一个单例函数 config,用于设置日志记录器的使用。

>>> import cazoo_logger
>>> cazoo_logger.config()

默认情况下,此配置将根日志记录器设置为INFO级别,写入特殊的JSON格式化程序。

要获取日志记录器实例,请使用适当的fromContext函数调用您的传入事件和上下文

>>> def handler(event, context):
...     logger = cazoo_logger.fromContext(event, context)
...     logger.info('sup?')
...

这将生成格式良好的JSON消息,具有文档化的架构。

{
    "msg": "sup?",
    "context": {
        "request_id": "abc123",
        "function": {"name": "do-things", "version": "0.1.2.3"},
        "sns": {
            "id": "66591d01-0241-5751-bb17-586e5a6dcf91",
            "topic": "arn:aws:sns:us-east-1:12345678912:bucket-o-stuff",
            "type": "Notification",
            "subject": "Amazon S3 Notification",
        },
    }
}

如果您没有AWS上下文和事件,您可以使用无上下文的日志记录器进行构建

>>> logger = cazoo_logger.empty()

记录错误

记录捕获的错误非常简单,只需在日志调用上设置exc_info kwarg为True。

>>> try:
...     raise ValueError("What in the heck do you call that?")
... except:
...     logger.warn("I dunno man, looks pretty sketchy to me", exc_info=True)
...
    {"msg": "I dunno man, looks pretty sketchy to me", "data": {"error": {"name": "ValueError", "message": "What in the heck do you call that?", "stack": "Traceback (most recent call last):\n  File \"<stdin>\", line 2, in <module>\nValueError: What in the heck do you call that?"}}}

记录附加数据

您可能希望将额外的结构化数据包含在日志中。传递给 extra kwarg 的任何值都将被序列化为日志行的 data 部分。

>>> logger.info("I did a query", extra={'sql': {'query': 'select * from table where field = ?', 'parameters': [123] }})
{"msg": "I did a query", "data": {"sql": {"query": "select * from table where field = ?", "parameters": [123]}}}

您还可以使用 with_data 方法。此方法返回一个新的日志记录器实例,其中数据部分已预先填充。

>>> new_logger = logger.with_data(sql={'query': 'select * from foo where bar = ?', 'parameters':[234]})
>>> new_logger.debug('doin a query')
{"msg": "doin a query", "data": {"sql": {"query": "select * from foo where bar = ?", "parameters": [234]}}}
>>> new_logger.error('oh noes! the query did not work!')
{"msg": "oh noes! the query did not work!", "data": {"sql": {"query": "select * from foo where bar = ?", "parameters": [234]}}}

记录附加上下文

同样,您可能还想将更多数据添加到日志事件的上下文部分。

>>> new_logger = logger.with_context(request_id='abc-123')
>>> new_logger.info('handling request')
{"msg": "handling request", "context": {"request_id": "abc-123"}}

附加日志级别

add_logging_level 函数允许您向记录器添加自定义日志级别。例如,可以将“TRACE”级别添加到15,以提供在DEBUG和INFO之间的日志级别。

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

cazoo_logger-0.11.0.tar.gz (23.8 kB 查看哈希值)

上传时间

由以下支持