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中PDB模块中的命令来调试Python代码的教程
Mar 30 Python
python获取当前计算机cpu数量的方法
Apr 18 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
Apr 02 Python
详谈python中冒号与逗号的区别
Apr 18 Python
python list转矩阵的实例讲解
Aug 04 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
Oct 11 Python
selenium+python设置爬虫代理IP的方法
Nov 29 Python
pip安装py_zipkin时提示的SSL问题对应
Dec 29 Python
python输出数组中指定元素的所有索引示例
Dec 06 Python
python自定义函数def的应用详解
Jun 03 Python
Scrapy实现模拟登录的示例代码
Feb 21 Python
图神经网络GNN算法
May 11 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 SQL防注入代码集合
2008/04/25 PHP
php编程实现获取excel文档内容的代码实例
2011/06/28 PHP
php中批量替换文件名的实现代码
2011/07/20 PHP
PHP中文编码小技巧
2014/12/25 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
2019/10/08 PHP
Javascript字符串浏览器兼容问题分析
2014/12/01 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
bootstrap中添加额外的图标实例代码
2017/02/15 Javascript
使用Vue开发一个实时性时间转换指令
2018/01/17 Javascript
JavaScript学习笔记之数组基本操作示例
2019/01/09 Javascript
vue 实现websocket发送消息并实时接收消息
2019/12/09 Javascript
Python中的index()方法使用教程
2015/05/18 Python
Python操作Word批量生成文章的方法
2015/07/28 Python
python 获取list特定元素下标的实例讲解
2018/04/09 Python
Python输入二维数组方法
2018/04/13 Python
tensorflow实现逻辑回归模型
2018/09/08 Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
2019/05/10 Python
Python K最近邻从原理到实现的方法
2019/08/15 Python
调用其他python脚本文件里面的类和方法过程解析
2019/11/15 Python
Django框架反向解析操作详解
2019/11/28 Python
python Qt5实现窗体跟踪鼠标移动
2019/12/13 Python
keras的siamese(孪生网络)实现案例
2020/06/12 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
Python迭代器协议及for循环工作机制详解
2020/07/14 Python
python zip()函数的使用示例
2020/09/23 Python
纯CSS和jQuery实现的在页面顶部显示的进度条效果2例(仿手机浏览器进度条效果)
2014/04/16 HTML / CSS
iKRIX意大利网上商店:男女豪华服装和配件
2019/10/09 全球购物
亚马逊新加坡官方网站:Amazon.sg
2020/03/25 全球购物
网上蛋糕店创业计划书
2014/01/24 职场文书
幼儿园中班教学反思
2014/02/10 职场文书
2014年少先队工作总结
2014/12/03 职场文书
皇城相府导游词
2015/02/06 职场文书
立项申请报告范本
2015/05/15 职场文书
解决SpringCloud Feign传对象参数调用失败的问题
2021/06/23 Java/Android
微信小程序结合ThinkPHP5授权登陆后获取手机号
2021/11/23 PHP
CDPR谈《巫师》新作用虚幻5原因 称不会为Epic独占
2022/04/06 其他游戏