python - 记录处理程序为空 - 为什么记录 TimeRoatingFileHandler 不起作用

标签 python windows logging logrotate log-rotation

所以我执行 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/

相关文章:

go - 日志repo的抽象实现

asp.net - 记录异常时忽略 ThreadAbortException

python - 通过 "workflow"将数据发布到数据库(例如 : on field changed to 20, 创建新记录)

python - 阅读文档不会自动生成 py-modindex.html

python - 为什么多个 `for`列表理解的顺序是这样的?

java - 如何将 FTP 链接复制到 Windows 系统剪贴板?

python re搜索语法来识别分布在多行上的文本模式

windows - 在 Windows 中激活 conda 环境时如何更改目录

c++ - 您知道用于编辑/翻译资源 (.rc) 文件的好程序吗?

logging - Kibana:日志和计算字段之间的持续时间