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实现命令行版的火车票查看器
Aug 05 Python
django用户注册、登录、注销和用户扩展的示例
Mar 19 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
Jun 26 Python
Python开启线程,在函数中开线程的实例
Feb 22 Python
Django实现单用户登录的方法示例
Mar 28 Python
python与字符编码问题
May 24 Python
详解Python3 pickle模块用法
Sep 16 Python
Python中itertools的用法详解
Feb 07 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
Apr 07 Python
Python API 操作Hadoop hdfs详解
Jun 06 Python
关于Theano和Tensorflow多GPU使用问题
Jun 19 Python
pycharm最新激活码有效期至2100年(亲测可用)
Feb 05 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带密码功能并下载远程文件保存本地指定目录 修改加强版
2010/05/16 PHP
windows环境下php配置memcache的具体操作步骤
2013/06/09 PHP
修改Laravel5.3中的路由文件与路径
2016/08/10 PHP
php结合ajax实现手机发红包的案例
2016/10/13 PHP
Prototype源码浅析 String部分(二)
2012/01/16 Javascript
JavaScript字符串插入、删除、替换函数使用示例
2013/07/25 Javascript
JS将所有对象s的属性复制给对象r(原生js+jquery)
2014/01/25 Javascript
javascript实现避免页面按钮重复提交
2015/01/08 Javascript
轻松实现javascript图片轮播特效
2016/01/13 Javascript
JQuery的常用选择器、过滤器、方法全面介绍
2016/05/25 Javascript
轻松掌握JavaScript状态模式
2016/09/07 Javascript
yarn与npm的命令行小结
2016/10/20 Javascript
javascript设置文本框光标的方法实例小结
2016/11/04 Javascript
H5上传本地图片并预览功能
2017/05/08 Javascript
Angular2的管道Pipe的使用方法
2017/11/07 Javascript
Angular实现双向折叠列表组件的示例代码
2017/11/21 Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
2019/12/13 Javascript
vue中jsonp插件的使用方法示例
2020/09/10 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
2020/11/06 Javascript
[01:34]DOTA2 7.22版本新增神杖效果一览(敏捷英雄篇)
2019/05/28 DOTA
[42:23]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第二场 12.10
2020/12/13 DOTA
Python中optionParser模块的使用方法实例教程
2014/08/29 Python
Python初学时购物车程序练习实例(推荐)
2017/08/08 Python
如何使用Python进行OCR识别图片中的文字
2019/04/01 Python
python脚本后台执行方式
2019/12/21 Python
Java中采用什么结构来捕获、处理异常?各子句的顺序、功能如何
2013/10/07 面试题
自我鉴定书范文
2013/10/02 职场文书
自考毕业自我鉴定范文
2013/10/27 职场文书
供货协议书范本
2014/04/22 职场文书
人力资源管理专业自荐书
2014/07/07 职场文书
品牌转让协议书
2014/08/20 职场文书
研究生就业推荐表导师评语
2014/12/31 职场文书
老人院义工活动感想
2015/08/07 职场文书
优质服务心得体会(共4篇)
2016/01/22 职场文书
初中物理教学反思
2016/02/19 职场文书
Python编程源码报错解决方法总结经验分享
2021/10/05 Python