python - 使日志记录模块将所有日志仅写入stderr
问题描述
我正在使用 pytest 测试产生一些输出的 CLI。在运行测试时,我想将 CLI 的日志级别设置为 DEBUG。但是,我不希望 CLI 日志干扰解析 CLI 输出的测试。
如何使日志记录模块将所有日志仅发送到 stderr?我查看了这篇文章,但它谈到了除了标准输出之外将日志发送到标准错误。
解决方案
执行与链接答案相同的操作,但将 stdout 替换为 stderr。因此,如果您想专门将日志转到 stderr,您将创建一个处理程序logging.StreamHandler(sys.stderr)
并确保这是唯一的活动处理程序。
正如@Tomerikoo 正确指出的那样,您不需要做任何事情,因为日志记录默认使用带有stderr 的StreamHandler。下面代码的唯一真正价值是它设置了与默认值不同的级别。只是logging.warning('log')
没有其他设置将向 stderr 发送日志。
附录:您也可以使用 basicConfig 来实现此目的,以减少样板代码。
import logging
import sys
logging.basicConfig(stream=sys.stderr, level=logging.INFO)
logging.info('test') # sends log to stderr
推荐阅读
- c++ - 避免指针运算,修复 clang tidy 错误
- javascript - 制表符,有没有办法在页脚中添加页面总和?
- ios - 我在 Tableview 单元格中有collectionView。它总是返回零。我该如何解决?
- python - 合并Dataframe中不同列的纬度和经度,然后使用haversine作为距离
- sql-server - 在其他数据库上找不到记录时更新行值
- python - 在 Anaconda Navigator 中不显示 Pip 安装的软件包
- java - 在 JavaFX 2020 中嵌入 JOGL 或 LibGDX
- c - 为什么这个 c 程序要像这样转换成汇编程序?
- android - 未解决的参考:RecyclerView 尝试继承 Adapter
- c - openmp 并行程序比串行程序慢得多