查看 python 文档,如果我将记录器级别设置为 INFO,它应该打印出级别为 INFO 及更高级别的所有日志。
但是,下面的代码截图只打印“错误”
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
logger.info("Info")
logger.error("error")
logger.info("info")
Run Code Online (Sandbox Code Playgroud)
输出
error
Run Code Online (Sandbox Code Playgroud)
这可能是什么原因?
小智 16
出现此行为的原因是没有定义日志记录处理程序。在这种情况下,使用处理程序“logging.lastResort”。默认情况下,该处理程序为“<_StderrHandler (WARNING)>”。它记录到 stderr,但仅从“警告”级别开始。
对于您的示例,您可以执行以下操作(记录到标准输出):
import logging
import sys
logger = logging.getLogger()
logger.setLevel(logging.INFO)
logger.addHandler(logging.StreamHandler(sys.stdout))
logger.info("info")
Run Code Online (Sandbox Code Playgroud)
输出
info
Run Code Online (Sandbox Code Playgroud)
在操作指南中,您可以找到其他有用的处理程序。
Ben*_*Ben 10
使用logging.basicConfig设置默认级别和默认的处理程序:
import logging
logger = logging.getLogger()
logging.basicConfig(level=logging.INFO)
logger.info("Info")
logger.error("error")
logger.info("info")
Run Code Online (Sandbox Code Playgroud)
印刷:
INFO:root:Info
ERROR:root:error
INFO:root:info
Run Code Online (Sandbox Code Playgroud)
该logging模块功能强大但令人困惑。查看文档中的 HOWTO以获取教程。我已经创建了自己的帮助函数,该函数可以记录到 stderr 以及我在博客中详细介绍的文件。您可能希望使其适应您的需求。
| 归档时间: |
|
| 查看次数: |
4848 次 |
| 最近记录: |