python logging设置level失败的解决方法


Posted in Python onFebruary 19, 2020

一、问题描述

在用python开发时经常用到logging这个包,根据官方示例,如果要指定日志级别可以写成如下的方式。

import logging
logging.basicConfig(level=logging.INFO)

但是在实际应用中,这种方式有时候会设置不成功,导致无法打印出info及以下级别的日志。一种最直接的解决方式是将这两行代码提到文件的最前面,保证在所有其他import语句之前。

示例如下。

# encoding=utf8
import logging
logging.basicConfig(level=logging.INFO)
# other import
import ...
# your code
if __name__ == '__main__':
  pass

二、问题解释

basicConfig函数的部分源码如下:

def basicConfig(**kwargs):
  _acquireLock()
  try:
    if len(root.handlers) == 0:
      filename = kwargs.get("filename")
      if filename:
        mode = kwargs.get("filemode", 'a')
        hdlr = FileHandler(filename, mode)
      else:
        stream = kwargs.get("stream")
        hdlr = StreamHandler(stream)
      fs = kwargs.get("format", BASIC_FORMAT)
      dfs = kwargs.get("datefmt", None)
      fmt = Formatter(fs, dfs)
      hdlr.setFormatter(fmt)
      root.addHandler(hdlr)
      level = kwargs.get("level")
      if level is not None:
        root.setLevel(level)
  finally:
    _releaseLock()

在代码里首先会判断一下root.handlers长度是否为0,如果不为0才新生成一个hander,并设置level。

如果在代码里调用这个函数之前,import了其他包,并且这些包里面也引用了logging这个包,就可能导致设置不成功。

logging包的默认日志级别为logging.UNSET,在这个日志级别只会打印warn及以上级别的日志。

以上这篇python logging设置level失败的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现排序算法
Feb 14 Python
python静态方法实例
Jan 14 Python
python append、extend与insert的区别
Oct 13 Python
python 数据清洗之数据合并、转换、过滤、排序
Feb 12 Python
Python实现读取txt文件并画三维图简单代码示例
Dec 09 Python
Python反射和内置方法重写操作详解
Aug 27 Python
用Python实现读写锁的示例代码
Nov 05 Python
Python minidom模块用法示例【DOM写入和解析XML】
Mar 25 Python
Python 操作 ElasticSearch的完整代码
Aug 04 Python
Django实现后台上传并显示图片功能
May 29 Python
Python如何读写字节数据
Aug 05 Python
Python字符串的转义字符
Apr 07 Python
Python实现病毒仿真器的方法示例(附demo)
Feb 19 #Python
python内打印变量之%和f的实例
Feb 19 #Python
Python 实现日志同时输出到屏幕和文件
Feb 19 #Python
python 控制台单行刷新,多行刷新实例
Feb 19 #Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
Feb 19 #Python
python 解决tqdm模块不能单行显示的问题
Feb 19 #Python
python 实现在shell窗口中编写print不向屏幕输出
Feb 19 #Python
You might like
PHP引用符&的用法详细解析
2013/08/22 PHP
PHP中array_map与array_column之间的关系分析
2014/08/19 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
2016/06/13 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
2016/08/17 PHP
php工具型代码之印章抠图
2018/07/18 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
2019/10/21 PHP
js tab 选项卡
2009/04/26 Javascript
JQuery获取浏览器窗口内容部分高度的代码
2012/02/24 Javascript
异步动态加载js与css文件的js代码
2013/09/15 Javascript
js改变文章字体大小的实例代码
2013/11/27 Javascript
jquery 图片缩放拖动的简单实例
2014/01/08 Javascript
简单分析javascript面向对象与原型
2015/05/21 Javascript
JS实现图片的不间断连续滚动的简单实例
2016/06/03 Javascript
详解Vue 实例中的生命周期钩子
2017/03/21 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
Vue 中文本内容超出规定行数后展开收起的处理的实现方法
2019/04/28 Javascript
node.JS事件机制与events事件模块的使用方法详解
2020/02/06 Javascript
JavaScript中数组去重的5种方法
2020/07/04 Javascript
Python splitlines使用技巧
2008/09/06 Python
Python数据结构之Array用法实例
2014/10/09 Python
以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法
2015/03/30 Python
Python中的map()函数和reduce()函数的用法
2015/04/27 Python
Python格式化输出%s和%d
2018/05/07 Python
Python类的继承用法示例
2019/01/31 Python
浅谈python的深浅拷贝以及fromkeys的用法
2019/03/08 Python
Python3实现汉语转换为汉语拼音
2019/07/08 Python
Python 获取命令行参数内容及参数个数的实例
2019/12/20 Python
Python实现图像的垂直投影示例
2020/01/17 Python
Python工程师必考的6个经典面试题
2020/06/28 Python
HTML5中的Article和Section元素认识及使用
2013/03/22 HTML / CSS
意大利体育用品网上商城:Nencini Sport
2016/08/18 全球购物
主题实践活动总结
2014/05/08 职场文书
导游词之张家界
2019/10/31 职场文书
python OpenCV学习笔记
2021/03/31 Python
Java Optional<Foo>转换成List<Bar>的实例方法
2021/06/20 Java/Android
Win11局域网共享权限在哪里设置? Win11高级共享的设置技巧
2022/04/05 数码科技