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 3中实现类型检查器的简单方法
Jul 03 Python
Python网络爬虫实例讲解
Apr 28 Python
Python进阶篇之字典操作总结
Nov 16 Python
全面了解Nginx, WSGI, Flask之间的关系
Jan 09 Python
python复制文件到指定目录的实例
Apr 27 Python
使用pandas批量处理矢量化字符串的实例讲解
Jul 10 Python
Python爬虫框架scrapy实现的文件下载功能示例
Aug 04 Python
python tkinter基本属性详解
Sep 16 Python
vscode 配置 python3开发环境的方法
Sep 19 Python
Python3 filecmp模块测试比较文件原理解析
Mar 23 Python
详解python polyscope库的安装和例程
Nov 13 Python
Pandas自定义选项option设置
Jul 25 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提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
mayfish 数据入库验证代码
2010/04/30 PHP
Symfony2创建页面实例详解
2016/03/18 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
2019/07/08 PHP
Javascript实例教程(19) 使用HoTMetal(1)
2006/12/23 Javascript
javascript实现的基于金山词霸网络翻译的代码
2010/01/15 Javascript
JQuery扩展插件Validate 2通过参数设置验证规则
2011/09/05 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
2020/09/12 Javascript
AngularJS轻松实现双击排序的功能
2016/08/30 Javascript
js点击按钮实现水波纹效果代码(CSS3和Canves)
2016/09/15 Javascript
原生js更改css样式的两种方式
2017/03/15 Javascript
JS使用正则表达式验证身份证号码
2017/06/23 Javascript
Vue.js2.0中的变化小结
2017/10/24 Javascript
React Native 真机断点调试+跨域资源加载出错问题的解决方法
2018/01/18 Javascript
详解js的作用域、预解析机制
2018/02/05 Javascript
vue2.0.js的多级联动选择器实现方法
2018/02/09 Javascript
webpack-dev-server远程访问配置方法
2018/02/22 Javascript
使用vue2实现购物车和地址选配功能
2018/03/29 Javascript
微信小程序日历弹窗选择器代码实例
2019/05/09 Javascript
Weex开发之地图篇的具体使用
2019/10/16 Javascript
如何利用nodejs自动定时发送邮件提醒(超实用)
2020/12/01 NodeJs
Python实现子类调用父类的方法
2014/11/10 Python
Python中List.index()方法的使用教程
2015/05/20 Python
使用Python的Twisted框架编写非阻塞程序的代码示例
2016/05/25 Python
详解python数据结构和算法
2019/04/18 Python
python实现批量nii文件转换为png图像
2019/07/18 Python
python实现身份证实名认证的方法实例
2019/11/08 Python
Python3+Django get/post请求实现教程详解
2021/02/16 Python
Waterford加拿大官方网站:世界著名的水晶杯品牌
2016/11/01 全球购物
Java TransactionAPI (JTA) 主要包含几部分
2012/12/07 面试题
应用电子技术专业个人求职信
2013/09/21 职场文书
函授本科自我鉴定
2013/11/03 职场文书
市场部专员岗位职责
2013/11/30 职场文书
教师业务学习制度
2014/01/25 职场文书
开业庆典致辞
2015/08/01 职场文书
根德5570型九灯四波段立体声收音机是电子管收音机的楷模 ? 再论5570
2022/04/05 无线电