Eri*_*mas 5 python logging dictionary
例如,在我的 python 代码中,我将字典传递给记录器。
extra_info = {"test":"data"}
logger.info("",extra=extra_info)
Run Code Online (Sandbox Code Playgroud)
我希望得到额外的信息来打印,我认为它在消息中,但是当我使用这种格式时
format=%(asctime)s %(levelname)s %(name)s: %(message)s
Run Code Online (Sandbox Code Playgroud)
未打印 extra_info 内容。我只是得到以下
2016/06/17 13:10:47 INFO test:
Run Code Online (Sandbox Code Playgroud)
根据logging docs,extra关键字参数用于向日志记录添加额外的上下文。
您可以extra通过添加 dict 键来使用通过格式化程序中的参数传递的信息:
format = '%(asctime)s - %(levelname)s - %(name)s - %(message)s - %(EXTRA_DICT_KEY)s'
Run Code Online (Sandbox Code Playgroud)
请注意,如果您像这样设置格式化程序并忘记传递 dict 键,您将收到字符串格式化异常。
正如您在示例中看到的,您没有在格式化程序中指定任何键。
所以,而不是:
format = '%(asctime)s - %(levelname)s - %(name)s - %(message)s'
Run Code Online (Sandbox Code Playgroud)
尝试:
format = '%(asctime)s - %(levelname)s - %(name)s - %(message)s - %(test)s'
Run Code Online (Sandbox Code Playgroud)