首页 > 解决方案 > 未使用与不同输出关联的不同级别写入调试日志

问题描述

logging用来管理我的 Python 代码的日志。我将为每个输出配置两个不同的输出(流和文件)以及特定级别的日志。问题是我的文件中没有写入调试级别,而我声明使用正确的级别......

兆瓦

import logging
logging.basicConfig(level=logging.INFO)
f = logging.FileHandler('log.log')
f.setLevel(logging.DEBUG)
logging.getLogger().addHandler(f)
logging.info('test')
logging.debug('test debug')

print(logging.getLogger().handlers)返回[<StreamHandler <stderr> (NOTSET)>, <FileHandler zz/xxx/log.log (DEBUG)>]

标签: pythonlogging

解决方案


您曾经basicConfig将根记录器的级别设置为INFO. 这意味着只接受级别为INFO及以上的日志。

您的处理程序具有 levelDEBUG并附加到具有 level 的根记录器INFO。所以只会处理级别为INFO及以上的日志。

不要使用基本配置!您应该使用 level of 显式配置您的记录器DEBUG并添加 2 个处理程序,一个使用 level 到 stdout,一个使用 levelINFO到 fileDEBUG


推荐阅读