关于Python日志记录中的NOTSET

2023-11-23

As the logger.setLevel医生说:

创建记录器时,级别设置为 NOTSET(这会导致当记录器是根记录器时处理所有消息,或者当记录器是非根记录器时将委托给父记录器)。请注意,根记录器是使用“警告”级别创建的。

所以我想如果我创建一个根记录器,级别为 NOTSET,则会显示调试和信息日志。

使用 basicConfig 将根记录器的级别设置为 NOTSET 的代码是正确的:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import logging

logging.basicConfig(level=logging.NOTSET)
log = logging.getLogger()

log.debug('debug')
log.info('info')
log.warning('warning')
log.error('error')
log.critical('critical')

输出是:

DEBUG:root:debug
INFO:root:info
WARNING:root:warning
ERROR:root:error
CRITICAL:root:critical

但是如果我创建一个根记录器,并向其添加具有 NOTSET 级别的处理程序,例如:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import logging

log = logging.getLogger()
hd = logging.StreamHandler()
hd.setLevel(logging.NOTSET)
log.addHandler(hd)

log.debug('debug')
log.info('info')
log.warning('warning')
log.error('error')
log.critical('critical')

输出是:

warning
error
critical

但我认为它也会输出调试和信息消息。


好吧,我误解了Logger's level and Handler's Level,在文档中:

setLevel() 方法,就像在记录器对象中一样,指定将分派到适当目的地的最低严重性。为什么有两个 setLevel() 方法?记录器中设置的级别确定它将传递给其处理程序的消息的严重性。每个处理程序中设置的级别确定该处理程序将发送哪些消息。

如果我将代码更改为这样,就可以了:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import logging

log = logging.getLogger()
log.setLevel(logging.NOTSET) # Set Logger's level to NOTSET, default is WARNING
#print "Logger's Level: ", log.level
hd = logging.StreamHandler()
hd.setLevel(logging.NOTSET)
#print "Handler's Level: ", hd.level
log.addHandler(hd)

log.debug('debug')
log.info('info')
log.warning('warning')
log.error('error')
log.critical('critical')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于Python日志记录中的NOTSET 的相关文章

随机推荐

  • 为什么 for_each 不能修改其函子参数?

    http www cplusplus com reference algorithm for each 一元函数取一个元素 范围作为参数 这可以 是一个指向函数或 其类重载的对象 操作员 它的返回值 如果有的话 被忽略 根据这篇文章 我预计
  • 整数除法返回 0

    我觉得我错过了一些明显的东西 我正在尝试测试的分布random 这是表格 create table test id int random float float random int int 这是我想做的 truncate table te
  • Sphinx HTML 输出的搜索功能的不同 URL 参数有何影响?

    Sphinx 生成的 HTML 文档包括一个搜索界面 例如 在 Python 官方文档中搜索术语 popen 时 将构造以下 URL 不同的 URL 参数有什么影响 Sphinx 生成的 HTML 文档的搜索执行完全基于 JavaScrip
  • 出现滚动条时 FireFox 中的长页面偏移

    在 Firefox 和 Safari 中 当页面足够长以显示滚动条时 居中的页面会移动几个像素 如果您浏览一个具有长页面和短页面的网站 页面似乎会 跳跃 IE7 倾向于让滚动条始终可见 但在页面不够长时将其禁用 由于 HTML 窗口的宽度永
  • Symfony 4 - KnpPaginator Bundle“找不到服务,即使它存在于应用程序的容器中”

    我一直在关注教程 所有说明都显示它是以完全相同的方式完成的 但它似乎在 Symfony 4 中不起作用 是否有我忽略的东西 或者捆绑包根本不兼容 I ran composer require knplabs knp paginator bu
  • 如何使用 jest 和 React 测试库测试调用提交表单的按钮

    所以我试图测试 onSubmit 函数是否在单击按钮时被触发 我这样做的方式是通过测试 onSubmit 函数的内部正在获取调用 axios post 方法 the test describe RecipeSearch gt test su
  • 关于Android中SQLite数据库游标的几个问题

    为了在我的应用程序中实现数据库访问 我遵循拉尔斯 沃格尔教程 但我对一些事情感到非常困惑 每次拨打电话时fetchTodo将创建并返回一个新游标 将前一个光标留给垃圾收集器 所以 如果我不使用startManagingCursor甚至是Cu
  • Android 应用程序中的 API 密钥等敏感全局信息存储在哪里?

    我需要在 Android 应用程序中存储一些敏感信息 如果我将其放入资源文件中 则其他应用程序只需使用以下命令即可浏览和读取该文件似乎是微不足道的PackageManager getResourcesForApplication 放置此类信
  • sqlalchemy,用DSN指定数据库名称

    我正在尝试使用以下命令从 Linux 连接到 SQL Serversqlalchemy 这一页显示基于 DSN 的连接 如下所示 engine create engine mssql pyodbc scott tiger some dsn
  • 如何让 PHP 回显 XML 标签?

    我正在开发一个具有大约 3 000 4 000 个动态生成页面的网站 并且我希望更新 XML 站点地图 我过去曾尝试使用在线生成器 但它们似乎从未正确捕获所有页面 所以我打算自己做一些事情 基本上我有类似的东西
  • 如何使用 AutoFac 解析正确的记录器类型?

    我正在更新一个使用 AutoFac 的遗留项目 并且我想将 NLog 与 Simple Logging Facade SLF 结合使用 我过去曾在 Ninject 中使用过它 它的设置非常简单 我只需要执行以下操作 kernel Bind
  • 如何在 JavaScript 中匹配整个单词?

    我试图通过文本框搜索整个单词 假设我搜索 me 我应该找到文本中所有出现的 me 一词 但不能找到 memmm 我正在使用 JavaScriptsearch my regex expression 执行当前搜索 没有成功 经过多次提议使用
  • 没有 chroot 的 LXC

    有没有办法在不创建容器的情况下使用LXC使用进程组进行资源管理 我正在开发一个在沙箱内运行任意代码的服务 我只对硬件资源管理感兴趣 我不想进行任何 chrooting 我只希望这些进程组能够访问主文件系统 有人告诉我 lxc 是轻量级的 但
  • arm-none-eabi-ld:找不到-lc

    我正在尝试为基于 XMC1100 的开发板编写代码 我正在尝试这个教程 http eleceng dit ie frank arm BareMetalXMC2Go index html 我已经下载了blinky tar gz 文件并解压 当
  • 使用 ssl 公钥/私钥基于 Web 登录?

    是否可以通过网络浏览器创建需要公钥 私钥的登录过程 公钥将存储在服务器上 私钥将由用户保存 并加密 我基本上想做一些类似于 SSH 的事情 但是通过网络 也许是 HTTP 身份验证的自定义方法 摘要 除外 我知道使用普通浏览器可能无法做到这
  • 使用数据库表中的值生成下拉列表输入

    我正在尝试使用 Laravel 生成一个包含 MySQL 表中的值的下拉列表 表格很简单 两列 id and category 以下将检索所有记录 类别 但返回一个对象而不是数组 这是我需要的下拉代码 categories Category
  • 如何在Python中制作n维嵌套for循环? [复制]

    这个问题在这里已经有答案了 我有以下情况 for x1 in range x1 x2 for x2 in range x3 x4 for x3 f x1 x2 x3 如何将其转换为我只告诉 python 的机制n变量名称为 x1 x2 x3
  • 检测这是 iframe 加载还是直接加载

    我希望仅在 iframe 内的页面上拉出表单时才显示该表单 我怎么做 有服务器端解决方案吗 如果您使用 JQuery 安装说明如下 http jquery com document ready function if window wind
  • 指针和引用作为 const 对象的成员变量

    以下代码编译良好 不过我想知道它是否是合法的C 更具体地说 如果我有一个 const 对象 我是否可以通过该对象的指针 引用修改变量 class Foo public int a int b Foo int a int b a a b b
  • 关于Python日志记录中的NOTSET

    As the logger setLevel医生说 创建记录器时 级别设置为 NOTSET 这会导致当记录器是根记录器时处理所有消息 或者当记录器是非根记录器时将委托给父记录器 请注意 根记录器是使用 警告 级别创建的 所以我想如果我创建一