所以我执行 logging.config.fileConfig 以从具有控制台和文件处理程序的文件配置中设置我的日志记录。然后我做 logging.getLogger(name) 来获取我的记录器和日志。在某些时候我想要更改文件处理程序的文件名,即日志轮换(由于 Windows 平台的一些问题,我不能使用时间轮换器)所以我调用 logger.handlers - 它显示一个空列表,所以我不能关闭它们!!但是,当我单步调试调试器时,它显然不是空的(当然没有它我将无法正确登录)
不确定这里发生了什么,我遗漏了什么陷阱吗?
感谢任何帮助。谢谢。
最佳答案
看来您需要正确获取根记录器:
logger = logging.getLogger(__name__)
handlers = logger.handlers[:]
print('module {}'.format(handlers))
print('module {}'.format(logger.hasHandlers()))
logger = logging.getLogger('root')
handlers = logger.handlers[:]
print('root {}'.format(handlers))
print('root {}'.format(logger.hasHandlers()))
logger = logging.getLogger()
handlers = logger.handlers[:]
print('blank {}'.format(handlers))
print('blank {}'.format(logger.hasHandlers()))
输出:
module []
module True
root []
root True
blank
[<logging.handlers.RotatingFileHandler object at 0x108d82898>, <logging.StreamHandler object at 0x108d826d8>]
blank True
关于python - 记录处理程序为空 - 为什么记录 TimeRoatingFileHandler 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24719421/