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 isinstance函数介绍
Apr 14 Python
python实现可将字符转换成大写的tcp服务器实例
Apr 29 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
Mar 02 Python
Python实现计算最小编辑距离
Mar 17 Python
Python之多线程爬虫抓取网页图片的示例代码
Jan 10 Python
wxPython之解决闪烁的问题
Jan 15 Python
Django中反向生成models.py的实例讲解
May 30 Python
python实现超市扫码仪计费
May 30 Python
Python和Go语言的区别总结
Feb 20 Python
解决python 3 urllib 没有 urlencode 属性的问题
Aug 22 Python
django admin 自定义替换change页面模板的方法
Aug 23 Python
python 求10个数的平均数实例
Dec 16 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
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
2009/10/29 PHP
PHP使用strtotime计算两个给定日期之间天数的方法
2015/03/18 PHP
详解PHP中array_rand函数的使用方法
2016/09/11 PHP
用PHP将Unicode 转化为UTF-8的实现方法(推荐)
2017/02/08 PHP
php实现base64图片上传方式实例代码
2017/02/22 PHP
Yii2中添加全局函数的方法分析
2017/05/04 PHP
PHP简单留言本功能实现代码
2017/06/09 PHP
键盘控制事件应用教程大全
2006/11/24 Javascript
js trim函数 去空格函数与正则集锦
2009/11/20 Javascript
Javacript实现颜色梯度变化和渐变的效果代码
2013/05/31 Javascript
基于js disabled="false"不起作用的解决办法
2013/06/26 Javascript
jQuery中fadeOut()方法用法实例
2014/12/24 Javascript
js跨域请求的5中解决方式
2015/07/02 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
2015/09/09 Javascript
jQuery选择器用法实例详解
2015/12/17 Javascript
微信和qq时间格式模板实例详解
2016/10/21 Javascript
bootstrap paginator分页前后台用法示例
2017/06/17 Javascript
JavaScript实现的搜索及高亮显示功能示例
2017/08/14 Javascript
Vue 使用Props属性实现父子组件的动态传值详解
2019/11/13 Javascript
[01:39](回顾)各路豪强针锋相对,几经鏖战四强产生
2014/07/01 DOTA
python 不关闭控制台的实现方法
2011/10/23 Python
详解Python使用simplejson模块解析JSON的方法
2016/03/24 Python
Django框架实现的简单分页功能示例
2018/12/04 Python
Python中常用的8种字符串操作方法
2019/05/06 Python
Python-while 计算100以内奇数和的方法
2019/06/11 Python
Django 请求Request的具体使用方法
2019/11/11 Python
Python基础之函数原理与应用实例详解
2020/01/03 Python
Python定时任务APScheduler原理及实例解析
2020/05/30 Python
Python类及获取对象属性方法解析
2020/06/15 Python
HUGO BOSS美国官方网上商店:世界知名奢侈品牌
2017/08/04 全球购物
党员大会主持词
2014/04/02 职场文书
大学活动总结格式
2014/04/29 职场文书
中学生旷课检讨书2篇
2014/10/09 职场文书
政协委员个人总结
2015/03/03 职场文书
社区节水倡议书
2015/04/29 职场文书
vue route新窗口跳转页面并且携带与接收参数
2022/04/10 Vue.js