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进程间通信Queue实例解析
Jan 25 Python
numpy中矩阵合并的实例
Jun 15 Python
python实现全盘扫描搜索功能的方法
Feb 14 Python
Python中单线程、多线程和多进程的效率对比实验实例
May 14 Python
python使用celery实现异步任务执行的例子
Aug 28 Python
python实现发送form-data数据的方法详解
Sep 27 Python
用Python画小女孩放风筝的示例
Nov 23 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
Feb 03 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
Apr 14 Python
Python collections.deque双边队列原理详解
Oct 05 Python
python进行二次方程式计算的实例讲解
Dec 06 Python
python 实现Harris角点检测算法
Dec 11 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测试硬盘写入速度示例
2014/01/27 PHP
destoon官方标签大全
2014/06/20 PHP
php 伪造ip以及url来路信息方法汇总
2014/11/25 PHP
thinkphp的URL路由规则与配置实例
2014/11/26 PHP
php实现购物车功能(下)
2016/01/05 PHP
php自定义函数转换html标签示例
2016/09/29 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
2017/08/15 PHP
javascript 数组排序函数
2009/08/20 Javascript
JQuery 弹出框定位实现方法
2010/12/02 Javascript
js正则表达式中test,exec,match方法的区别说明
2014/01/29 Javascript
js实现div闪烁原理及实现代码
2014/06/24 Javascript
jQuery选择器源码解读(七):elementMatcher函数
2015/03/31 Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
2015/09/16 Javascript
jQuery中页面返回顶部的方法总结
2016/12/30 Javascript
JS中使用 after 伪类清除浮动实例
2017/03/01 Javascript
基于JavaScript实现图片连播和联级菜单实例代码
2017/07/28 Javascript
JS中Promise函数then的奥秘探究
2018/07/30 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
[54:08]LGD女子刀塔学院 DOTA2炼金术士教学
2014/01/09 DOTA
[20:57]Ti4主赛事第三天开幕式
2014/07/21 DOTA
Python 正则表达式的高级用法
2016/12/04 Python
浅谈Python2获取中文文件名的编码问题
2018/01/09 Python
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
开展党的群众路线教育实践活动方案
2014/02/05 职场文书
师德师风个人自我剖析材料
2014/09/27 职场文书
2014年预备党员群众路线教育实践活动对照检查材料思想汇报
2014/10/02 职场文书
个人工作总结范文2014
2014/11/07 职场文书
2014教师年度工作总结
2014/11/10 职场文书
离婚承诺书格式范文
2015/05/04 职场文书
初中政教处工作总结
2015/08/12 职场文书
pytorch实现线性回归以及多元回归
2021/04/11 Python
pytorch交叉熵损失函数的weight参数的使用
2021/05/24 Python
浅谈PostgreSQL表分区的三种方式
2021/06/29 PostgreSQL
jQuery实现广告显示和隐藏动画
2021/07/04 jQuery
CSS中使用grid布局实现一套模板多种布局
2022/07/15 HTML / CSS
SqlServer常用函数及时间处理小结
2023/05/08 SQL Server