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导出Excel图表以及导出为图片的方法
Nov 07 Python
Python数据操作方法封装类实例
Jun 23 Python
TensorFlow实现Logistic回归
Sep 07 Python
Window 64位下python3.6.2环境搭建图文教程
Sep 19 Python
详解Python匿名函数(lambda函数)
Apr 19 Python
Python+PyQT5的子线程更新UI界面的实例
Jun 14 Python
Python中最好用的命令行参数解析工具(argparse)
Aug 23 Python
python绘制彩虹图
Dec 16 Python
Python面向对象中类(class)的简单理解与用法分析
Feb 21 Python
Python如何输出警告信息
Jul 30 Python
Python使用pycharm导入pymysql教程
Sep 16 Python
Python使用pandas导入csv文件内容的示例代码
Dec 24 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表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
2015/09/30 PHP
PHP实现批量重命名某个文件夹下所有文件的方法
2017/09/04 PHP
php json转换相关知识(小结)
2018/12/21 PHP
Laravel 不同生产环境服务器的判断实践
2019/10/15 PHP
php测试kafka项目示例
2020/02/06 PHP
一些常用且实用的原生JavaScript函数
2010/09/08 Javascript
javascript倒计时功能实现代码
2012/06/07 Javascript
JS中toFixed()方法引起的问题如何解决
2012/11/20 Javascript
优化Jquery,提升网页加载速度
2013/11/14 Javascript
使用jquery动态加载Js文件和Css文件
2015/10/24 Javascript
jQuery中bind(),live(),delegate(),on()绑定事件方法实例详解
2016/01/19 Javascript
Javascript删除指定元素节点的方法
2016/06/21 Javascript
JS实现对中文字符串进行utf-8的Base64编码的方法(使其与Java编码相同)
2016/06/21 Javascript
JS基于面向对象实现的多个倒计时器功能示例
2017/02/28 Javascript
jquery实现放大镜简洁代码(推荐)
2017/06/08 jQuery
JavaScript实现写入文件到本地的方法【基于FileSaver.js插件】
2018/03/15 Javascript
详解js静态检查工具eslint配置文件
2018/11/23 Javascript
vue实现百度语音合成的实例讲解
2019/10/14 Javascript
Vue.extend 登录注册模态框的实现
2020/12/29 Vue.js
[00:33]DOTA2上海特级锦标赛 CDEC战队宣传片
2016/03/04 DOTA
JSONLINT:python的json数据验证库实例解析
2017/11/28 Python
在python里协程使用同步锁Lock的实例
2019/02/19 Python
Python判断对象是否相等及eq函数的讲解
2019/02/25 Python
django celery redis使用具体实践
2019/04/08 Python
在tensorflow中实现屏蔽输出的log信息
2020/02/04 Python
解决Python import docx出错DLL load failed的问题
2020/02/13 Python
python自动提取文本中的时间(包含中文日期)
2020/08/31 Python
曼联官方网上商店:Manchester United Direct
2017/07/28 全球购物
教师远程培训感言
2014/03/06 职场文书
公司新年寄语
2014/04/04 职场文书
2014年音乐教师工作总结
2014/12/03 职场文书
2014年稽查工作总结
2014/12/20 职场文书
安全教育的主题班会
2015/08/13 职场文书
Python读取文件夹下的所有文件实例代码
2021/04/02 Python
基于python定位棋子位置及识别棋子颜色
2021/07/26 Python
了解MySQL查询语句执行过程(5大组件)
2022/08/14 MySQL