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爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
Feb 23 Python
unittest+coverage单元测试代码覆盖操作实例详解
Apr 04 Python
python3 遍历删除特定后缀名文件的方法
Apr 23 Python
Python格式化日期时间操作示例
Jun 28 Python
python 反向输出字符串的方法
Jul 16 Python
解决python "No module named pip" 的问题
Oct 13 Python
python 将字符串中的数字相加求和的实现
Jul 18 Python
TensorFlow实现checkpoint文件转换为pb文件
Feb 10 Python
python 比较字典value的最大值的几种方法
Apr 17 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
May 11 Python
基于python SMTP实现自动发送邮件教程解析
Jun 02 Python
python实现调用摄像头并拍照发邮箱
Apr 27 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
自动分页的不完整解决方案
2007/01/12 PHP
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
2014/04/10 PHP
thinkphp实现like模糊查询实例
2014/10/29 PHP
PHP里8个鲜为人知的安全函数分析
2014/12/09 PHP
PHP 获取指定地区的天气实例代码
2017/02/08 PHP
laravel 数据验证规则详解
2019/10/23 PHP
javascript firefox不显示本地预览图片问题的解决方法
2008/11/12 Javascript
jquery.jstree 增加节点的双击事件代码
2010/07/27 Javascript
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
2011/07/04 Javascript
深入理解JavaScript系列(1) 编写高质量JavaScript代码的基本要点
2012/01/15 Javascript
通过百度地图获取公交线路的站点坐标的js代码
2012/05/11 Javascript
纯js网页画板(Graphics)类简介及实现代码
2012/12/24 Javascript
js 页面元素的几个用法总结
2013/11/18 Javascript
jQuery 中国省市两级联动选择附图
2014/05/14 Javascript
javascript制作幻灯片(360度全景图片)
2015/07/28 Javascript
jquery实现的Banner广告收缩效果代码
2015/09/02 Javascript
jquery对复选框(checkbox)的操作汇总
2016/01/13 Javascript
jQuery实现简易的输入框字数计数功能示例
2017/01/16 Javascript
ES6知识点整理之Proxy的应用实例详解
2019/04/16 Javascript
vue 导航内容设置选中状态样式的例子
2019/11/01 Javascript
js cavans实现静态滚动弹幕
2020/05/21 Javascript
微信小程序实现通讯录列表展开收起
2020/11/18 Javascript
Vue实现点击当前行变色
2020/12/14 Vue.js
跟老齐学Python之从if开始语句的征程
2014/09/14 Python
Python写的英文字符大小写转换代码示例
2015/03/06 Python
pandas 小数位数 精度的处理方法
2018/06/09 Python
Python实现的读取文件内容并写入其他文件操作示例
2019/04/09 Python
django-rest-swagger的优化使用方法
2019/08/29 Python
使用Python发现隐藏的wifi
2020/03/04 Python
几款Python编译器比较与推荐(小结)
2020/10/15 Python
整理的15个非常有用的 HTML5 开发教程和速查手册
2011/10/18 HTML / CSS
选秀节目策划方案
2014/06/06 职场文书
“三支一扶”支教教师思想汇报
2014/09/13 职场文书
寻衅滋事罪辩护词
2015/05/21 职场文书
2015年教研工作总结
2015/05/23 职场文书
Android开发手册自定义Switch开关按钮控件
2022/06/10 Java/Android