标准python记录器的一个小包装
structured-logger的Python项目详细描述
结构化记录器
编写此日志是为了尝试围绕python的默认logging
库提供结构化日志记录。潜在的用途包括在弹性堆栈中添加要分析和筛选的其他对象。
如果需要结构化json日志输出,则可以使用此库,而不必对完整实现(如structlog
)进行过度杀戮。这并不是要从structlog
中拿走任何东西,对于大型项目来说,这仍然是一个更好的选择。
用法
记录器的使用方式应该与pythonlogging
包类似。如果没有附加的上下文键,可以按如下方式使用:
fromstructured_loggerimportLoggerlogger=Logger(__name__)logger.set_level("DEBUG")# This could be set by an environment variabledeftest_function():do_a_thing()logger.info("this is a typical logging message")
但是,可以通过在消息之后传递参数的dict
来输出附加上下文:
fromstructured_loggerimportLoggerlogger=Logger(__name__)logger.set_level("DEBUG")# This could be set by an environment variabledeftest_function():user_info=login()logger.info("user logged in",{"user":user_info})
最后,默认情况下,error()
函数将提供额外的堆栈跟踪信息,并在适当的情况下提供异常信息:
fromstructured_loggerimportLoggerlogger=Logger(__name__)logger.set_level("DEBUG")# This could be set by an environment variabledeftest_function():try:something_that_raises_a_value_error()exceptValueError:logger.error("a value error has been thrown")
上面应该输出json和字段errorName
、errorMessage
和errorStackTrace
中的附加信息。