python logging.basicConfig()调用多次以哪次为准?

简介: 今天在调程序的时候就遇到了上述问题,先猜一下下边两段代码的运行结果?有没有“日志级别”打印出来?: ``` python logging.basicConfig( format='[%(processName)s-%(process)d] [%(filename)s:%(lineno)s] %(message)s', level=loggin

今天在调程序的时候就遇到了上述问题,先猜一下下边两段代码的运行结果?有没有“日志级别”打印出来?:

logging.basicConfig(
            format='[%(processName)s-%(process)d] [%(filename)s:%(lineno)s] %(message)s',
            level=logging.DEBUG,
            datefmt='%Y-%m-%d %H:%M:%S'
        )

logging.basicConfig(
            format='%(levelname)7s [%(processName)s-%(process)d] [%(filename)s:%(lineno)s] %(message)s',
            level=logging.DEBUG,
            datefmt='%Y-%m-%d %H:%M:%S'
        )

在测试之前,按照惯性思维去想,结果应该是会有“日志级别”输出吧?毕竟后边的赋值会覆盖前边的赋值,但真实结果却是:

[MainProcess-23556] [t.py:37] sd
[MainProcess-23556] [t.py:24] operator

并没有输出“日志级别”!为什么呢?经过一番百度,在官网的文档中找到了答案:
003B8B1B-B4B5-41EC-BC11-A4DC88788EAE.png
原来只会以第一次的赋值为准啊!除非使用 force 参数,再来试一把 force 参数:

logging.basicConfig(
            format='[%(processName)s-%(process)d] [%(filename)s:%(lineno)s] %(message)s',
            level=logging.DEBUG,
            datefmt='%Y-%m-%d %H:%M:%S'
        )

logging.basicConfig(
            format='%(levelname)7s [%(processName)s-%(process)d] [%(filename)s:%(lineno)s] %(message)s',
            level=logging.DEBUG,
            datefmt='%Y-%m-%d %H:%M:%S',
            force=True
        )

这次结果就是后边的一种格式了:

   INFO [MainProcess-23633] [t.py:38] sd
   INFO [MainProcess-23633] [t.py:25] operator

为什么会这样设计呢?
看一下上述官方文档所在章节就知道了:
FB3E2503-9AB1-4866-8343-41B62AA7A106.png
原来是为了线程安全啊!

相关文章
|
数据安全/隐私保护 Python
python接口自动化(三十四)-封装与调用--函数和参数化(详解)
参数化的思维只需记住一点:不要写死,这样就便于维护,否则就会牵一发而动全身,一处修改导致处处修改,不便于维护。
1336 1
python接口自动化(三十四)-封装与调用--函数和参数化(详解)
|
Java C# 决策智能
运筹优化学习09:一个示例带你入门如何使用C++、C#、Java、Python、Matlab调用Cplex(下)
运筹优化学习09:一个示例带你入门如何使用C++、C#、Java、Python、Matlab调用Cplex
运筹优化学习09:一个示例带你入门如何使用C++、C#、Java、Python、Matlab调用Cplex(下)
|
Java 测试技术 C#
运筹优化学习09:一个示例带你入门如何使用C++、C#、Java、Python、Matlab调用Cplex(上)
运筹优化学习09:一个示例带你入门如何使用C++、C#、Java、Python、Matlab调用Cplex
运筹优化学习09:一个示例带你入门如何使用C++、C#、Java、Python、Matlab调用Cplex(上)
|
NoSQL Redis 开发工具
python调用redis-cell(CL.THROTTLE)
python调用redis-cell(CL.THROTTLE)
392 0
python调用redis-cell(CL.THROTTLE)
|
Linux Python
linux qt 项目中QProcess调用命令行命令执行python脚本
linux qt 项目中QProcess调用命令行命令执行python脚本
linux qt 项目中QProcess调用命令行命令执行python脚本
|
数据管理 测试技术 API
python接口自动化(三十七)-封装与调用--读取excel 数据(详解)
在进行软件接口测试或设计自动化测试框架时,一个不比可避免的过程就是: 参数化,在利用python进行自动化测试开发时,通常会使用excel来做数据管理,利用xlrd、xlwt开源包来读写excel。例如:当我们登录的账号有多个的时候,我们一般用 excel 存放测试数据,本篇文章介绍,python 读取excel 方法,并保存为字典格式。
702 0
python接口自动化(三十七)-封装与调用--读取excel 数据(详解)
|
jenkins 测试技术 持续交付
python接口自动化(三十六)-封装与调用--流程类接口关联续集(详解)
上一篇已经给大家都介绍过了流程类接口关联,但是由于博客的登录机制改变,所以没有办法给小伙伴们实战演练一下,那么这篇就按照上一篇计划的用jenkins来给小伙伴们演示一下流程类接口的封装和调用,其实很简单,就是用上一篇和前边这篇传送门的代码稍稍修改即可。不知道你自己练习了么,如果练习了,可以看看和我有什么不同,没练习的看看自己思路和我有啥不一样。好了废话少说进入主题
337 0
python接口自动化(三十六)-封装与调用--流程类接口关联续集(详解)
|
jenkins 测试技术 持续交付
python接口自动化(三十五)-封装与调用--流程类接口关联(详解)
流程相关的接口,主要用 session 关联,如果写成函数(如上篇),s 参数每个函数都要带,每个函数多个参数,这时候封装成类会更方便。在这里我们还是以博客园为例,带着小伙伴们实践一下。
630 0
python接口自动化(三十五)-封装与调用--流程类接口关联(详解)
|
编译器 API C++
python 外部传参程序编写并打包exe及其调用方式
每种编程语言相互联系又相互独立,为此使用某种编程语言编写的程序都能够独立封装和生成自己的运行程序exe或者其他的API接口。而对于这样的运行程序目的往往不是用于双击使其运行的,而是通过外部传入的参数运行其中的内核函数达到某种目的的。所以在此研究python如何编写外部传参的程序,并将其封装未exe便于外部使用。
1311 0
python 外部传参程序编写并打包exe及其调用方式
|
数据采集 搜索推荐 API
我做的python 中文api调用模块
可以自动调用api接口

推荐镜像

更多