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函数编程的一些特性
Apr 13 Python
Python实现单词拼写检查
Apr 25 Python
python在linux系统下获取系统内存使用情况的方法
May 11 Python
TF-IDF算法解析与Python实现方法详解
Nov 16 Python
Python2.7实现多进程下开发多线程示例
May 31 Python
python的sorted用法详解
Jun 25 Python
python socket 聊天室实例代码详解
Nov 14 Python
详解Python的三种拷贝方式
Feb 11 Python
python求最大公约数和最小公倍数的简单方法
Feb 13 Python
Python填充任意颜色,不同算法时间差异分析说明
May 16 Python
python opencv实现图像配准与比较
Feb 09 Python
python爬取豆瓣电影排行榜(requests)的示例代码
Feb 18 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仿ZOL分页类代码
2008/10/02 PHP
php str_pad() 将字符串填充成指定长度的字符串
2010/02/23 PHP
PHP连接SQLServer2005方法及代码
2013/12/26 PHP
laravel学习教程之关联模型
2016/07/30 PHP
php字符集转换
2017/01/23 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
Yii框架日志操作图文与实例详解
2019/09/09 PHP
PHP执行linux命令6个函数代码实例
2020/11/24 PHP
谷歌浏览器 insertCell与appendChild的区别
2009/02/12 Javascript
jquery checkbox全选、取消全选实现代码
2010/03/05 Javascript
JavaScript字符串对象slice方法入门实例(用于字符串截取)
2014/10/16 Javascript
javascript 中的console.log和弹出窗口alert
2016/08/30 Javascript
xcode中获取js文件的路径方法(推荐)
2016/11/05 Javascript
Angularjs中数据绑定的实例详解
2017/08/25 Javascript
使用Angular9和TypeScript开发RPG游戏的方法
2020/03/25 Javascript
详解阿里Node.js技术文档之process模块学习指南
2021/01/04 Javascript
[04:00]DOTA2解说界神雕侠侣 CJ第四天谷子现场过生日
2013/07/30 DOTA
Python multiprocessing.Manager介绍和实例(进程间共享数据)
2014/11/21 Python
Linux下编译安装MySQL-Python教程
2015/02/02 Python
Python tkinter label 更新方法
2018/10/11 Python
python 高效去重复 支持GB级别大文件的示例代码
2018/11/08 Python
用Python获取摄像头并实时控制人脸的实现示例
2019/07/11 Python
简单了解python装饰器原理及使用方法
2019/12/18 Python
对Tensorflow中tensorboard日志的生成与显示详解
2020/02/04 Python
Python 解析pymysql模块操作数据库的方法
2020/02/18 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
2020/02/29 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
2020/12/01 Python
css3 利用transform打造走动的2D时钟
2020/10/20 HTML / CSS
南京某公司笔试题
2013/01/27 面试题
自动化系在校本科生求职信
2013/10/23 职场文书
服装电子商务创业计划书
2014/01/30 职场文书
2014年督导工作总结
2014/11/19 职场文书
2015年机械设备管理工作总结
2015/05/04 职场文书
搞笑结婚保证书
2015/05/08 职场文书
毕业论文答辩稿范文
2015/06/23 职场文书
MySQL GRANT用户授权的实现
2021/06/18 MySQL