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的Django框架中获取单个对象数据的简单方法
Jul 17 Python
Windows下安装python MySQLdb遇到的问题及解决方法
Mar 16 Python
python 获取字符串MD5值方法
May 29 Python
Python利用字典破解WIFI密码的方法
Feb 27 Python
详解Python静态网页爬取获取高清壁纸
Apr 23 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
Sep 22 Python
Python 识别12306图片验证码物品的实现示例
Jan 20 Python
基于python实现地址和经纬度转换
May 19 Python
Python如何利用Har文件进行遍历指定字典替换提交的数据详解
Nov 05 Python
python动态规划算法实例详解
Nov 22 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
Jan 08 Python
对Pytorch 中的contiguous理解说明
Mar 03 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
YII中assets的使用示例
2014/07/31 PHP
JavaScript高级程序设计
2006/12/29 Javascript
js trim函数 去空格函数与正则集锦
2009/11/20 Javascript
JQuery切换显示的效果实例代码
2013/02/27 Javascript
JS 实现Table相同行的单元格自动合并示例代码
2013/08/27 Javascript
使用JS CSS去除IE链接虚线框的三种方法
2013/11/14 Javascript
javascript弹出窗口实现代码
2015/11/12 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
vue+axios+mock.js环境搭建的方法步骤
2018/08/28 Javascript
vue文件运行的方法教学
2019/02/12 Javascript
js实现表单项的全选、反选及删除操作示例
2020/06/05 Javascript
[03:56]DOTA2完美大师赛趣味视频之小鸽子和Mineski打台球
2017/11/24 DOTA
[50:48]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
django中send_mail功能实现详解
2018/02/06 Python
python获取文件路径、文件名、后缀名的实例
2018/04/23 Python
python 执行文件时额外参数获取的实例
2018/12/18 Python
对Python实现累加函数的方法详解
2019/01/23 Python
Python selenium根据class定位页面元素的方法
2019/02/26 Python
djano一对一、多对多、分页实例代码
2019/08/16 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
2019/09/20 Python
python实现根据文件格式分类
2019/10/31 Python
python读取文件指定行内容实例讲解
2020/03/02 Python
Flask缓存静态文件的具体方法
2020/08/02 Python
Django中ORM的基本使用教程
2020/12/22 Python
python工具快速为音视频自动生成字幕(使用说明)
2021/01/27 Python
小学教师管理制度
2014/01/18 职场文书
2014政务公开实施方案
2014/02/19 职场文书
班主任对学生的评语
2014/04/26 职场文书
软件项目实施计划书
2014/05/02 职场文书
仲裁协议书
2014/09/26 职场文书
2014年党员发展工作总结
2014/12/02 职场文书
2014年妇幼保健工作总结
2014/12/08 职场文书
2019个人工作态度自我评价
2019/04/24 职场文书
承诺书应该怎么写?
2019/09/10 职场文书
CSS实现五种常用的2D转换
2021/12/06 HTML / CSS