『无为则无心』Python日志 — 69、补充:logging.basicConfig()函数说明
1、basicConfig()函数说明
- 此函数,通过创建一个带有默认
Formatter
(格式器)的StreamHandler
(处理器),并将其添加到根日志记录器中来初始化基本配置。 - 如果根日志记录器没有定义处理器,则
logger.debug()
,logger.info()
,logger.warning()
,logger.error()
和logger.critical()
函数会自动调用basicConfig()
函数中的配置 。 - 如果根日志记录器已经配置了处理器,则此函数不起作用。
说明:
- 此函数应该在主线程中调用,且在其他线程开始之前。
- 在Python2.7.1和3.2之前,此函数被多线程调用。
- 有可能(极少数)处理器会被多次添加到根日志记录器,导致意外结果比如日志中信息重复。
支持以下关键字参数:
格式 | 描述 |
---|---|
filename |
使用指定的文件名。 |
filemode |
如果指定filename 参数,则以此模式打开文件(‘r’、‘w’、‘a’) ,默认为“a” 。 |
format |
使用指定字符串格式输出。 |
datefmt |
指定时间格式,同time.strftime() 函数. |
style |
I如果指定了format ,请对该格式字符串使用此样式。 '%' , '{' , '$' 可以分别使用在 printf-style , str.format() or string.Template 中,默认 '%' 。 |
level |
指定根日志记录器级别,默认为logging.WARNING 。 |
stream |
指定将日志的输出流,可以指定输出到sys.stderr (重定向日志信息,也就是把日志信息不输出到控制台,改为其他地方),sys.stdout 或者文件,默认输出到sys.stderr ,当stream 和filename 同时指定时,stream 被忽略或者报错ValueError 。(一般不用) |
handlers |
指定日志处理器,如果根日志器没有执行新的日志处理器,默认使用此处配置。所有尚未设置格式器的处理程序,都将被分配此函数中创建的默认格式器。 请注意,此参数与filename 和stream 不兼容,如果两者都存在,则会引发ValueError 。(一般不用) |
2、应用
注意:这种方式对中文日志信息处理不友好,编码错乱,我们一般也很少用,都使用定义好的日志处理来输入日志。
# coding=utf8
import logging
"""
参数含义:
level:指定日志级别,默认为logging.INFO
format:指定日志输出格式。
datefmt:指定时间格式。
filename:指定写入日志文件名。
filemode:指定写入方式,'w'或'a'
输出格式挺好看的:
format = 'levelname:%(levelname)s filename: %(filename)s '
'outputNumber: [%(lineno)d] thread: %(threadName)s output msg: %(message)s'
' - %(asctime)s',
"""
# 配置basicConfig函数
logging.basicConfig(level=logging.INFO,
datefmt='[%d/%b/%Y %H:%M:%S]',
filename='../log/info.log')
# 创建一个日志器,就是一个logger对象
logger = logging.getLogger('logger')
logger.debug('logger debug message')
logger.info('logger info message')
logger.warning('logger warning message')
logger.error('logger error message')
logger.critical('logger critical message')
# 或者
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')
输出结果为:info
以上的日志级别都输出了。
[17/Jan/2021 01:02:13] demo_log.py[line:24] INFO logger info message
[17/Jan/2021 01:02:13] demo_log.py[line:25] WARNING logger warning message
[17/Jan/2021 01:02:13] demo_log.py[line:26] ERROR logger error message
[17/Jan/2021 01:02:13] demo_log.py[line:27] CRITICAL logger critical message
[17/Jan/2021 01:02:13] demo_log.py[line:31] INFO info message
[17/Jan/2021 01:02:13] demo_log.py[line:32] WARNING warning message
[17/Jan/2021 01:02:13] demo_log.py[line:33] ERROR error message
[17/Jan/2021 01:02:13] demo_log.py[line:34] CRITICAL critical message
当我们给日志器定义一个处理器,在看看效果:
# coding=utf8
import logging
"""
参数含义:
level:指定日志级别,默认为logging.INFO
format:指定日志输出格式。
datefmt:指定时间格式。
filename:指定写入日志文件名。
filemode:指定写入方式,'w'或'a'
"""
logging.basicConfig(level=logging.INFO,
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
datefmt='[%d/%b/%Y %H:%M:%S]',
filename='../log/info.log')
# 创建一个日志器,就是一个logger对象
logger = logging.getLogger('logger')
# 1.创建日志处理器
fh = logging.StreamHandler()
# 2.设置日志处理器输出级别
fh.setLevel(logging.ERROR)
# 3.把处理器添加到日志器中
logger.addHandler(fh)
logger.debug('logger debug message')
logger.info('logger info message')
logger.warning('logger warning message')
logger.error('logger error message')
logger.critical('logger critical message')
# 或者
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')
输出结果:
logger error message
logger critical message
说明:新定义的处理器,代替了basicConfig
函数中定义的内容。同时logging.debug('debug message')
这种直接调用的方式也不执行了。
『无为则无心』Python日志 — 69、补充:logging.basicConfig()函数说明的更多相关文章
- 『无为则无心』Python日志 — 67、logging日志模块处理流程
目录 1.概括理解 2.详细说明 3.应用示例 1.概括理解 了解了四大组件的基本定义之后,我们通过图示的方式来理解下信息的传递过程: 也就是获取的日志信息,进入到Logger日志器中,传递给处理器确 ...
- 『无为则无心』Python日志 — 64、Python日志模块logging介绍
目录 1.日志的作用 2.为什么需要写日志 3.Python中的日志处理 (1)logging模块介绍 (2)logging模块的四大组件 (3)logging日志级别 1.日志的作用 从事与软件相关 ...
- 『无为则无心』Python日志 — 65、日志模块logging的使用
目录 1.logger类用法 2.handler类用法 3.formatter类用法 4.filter类用法 1.logger类用法 logger类:logger用于提供日志接口,常用于配置和发送日志 ...
- 『无为则无心』Python日志 — 66、将日志信息保存到文件中
目录 1.把日志信息保存到文件中 2.拓展 (1)观察代码 (2)提出问题 (3)问题说明 1.把日志信息保存到文件中 代码如下所示: """ logging模块是Pyt ...
- 『无为则无心』Python基础 — 9、Python字符串的编码与转义
目录 1.查看变量类型 2.转义字符 (1)转义字符说明 (2)示例 (3)常用转义字符对照表 3.字符编码 (1)字符编码介绍 (2)Python中的字符编码 (3)编码格式应用于不同场景 提示:上 ...
- 『无为则无心』Python基础 — 10、Python字符串的格式化输出
目录 1.什么是格式化输出 2.Python格式化输出的五种方式 方式一:字符串之间用+号拼接 方式二:print()函数可同时输出多个字符串 方式三:占位符方式 方式四:f格式化方式(推荐) 方式五 ...
- 『无为则无心』Python基础 — 11、Python中的数据类型转换
目录 1.为什么要进行数据类型转换 2.数据类型转换本质 3.数据类型转换用到的函数 4.常用数据类型转换的函数 (1)int()函数 (2)float()函数 (3)str()函数 (4)bool( ...
- 『无为则无心』Python面向对象 — 46、类和对象
目录 1.理解类和对象 2.类 3.对象 4.Python中的对象 5.类和对象的定义 (1)定义类 (2)创建对象 (3)练习 6.拓展:isinstance() 函数 1.理解类和对象 (1)类和 ...
- 『无为则无心』Python基础 — 2、编译型语言和解释型语言的区别
目录 1.什么是计算机语言 2.高级语言中的编译型语言和解释型语言 (1)编译型语言 (2)解释型语言 (3)编译型语言和解释型语言执行流程 3.知识扩展: 4.关于Python 1.什么是计算机语言 ...
随机推荐
- CKKS Part5: CKKS的重缩放
本文翻译于 CKKS EXPLAINED, PART 5: RESCALING,主要介绍CKKS方案中最重要的技术- rescaling,重缩放技术 介绍 在CKKS的前一篇文章 CKKS Part4 ...
- Atcoder ARC-062
ARC062(2020.7.13) A 可以考虑直接同时扩大这次的两个票数,那么使得两数均大于之前位置的票数就是最优的,扩大的话直接除一下上取整即可. B 贪心即可. C 可以发现这个东西如果直接计数 ...
- C语言system函数
我们今天来看看在windows操作系统下system () 函数详解(主要是在C语言中的应用) 注意:在windows下的system函数中命令可以不区别大小写! 函数名: system 功 能: 发 ...
- JspSmartUpload 简略使用
JspSmartUpload 简略中文API文档 链接:https://blog.csdn.net/weixin_43670802/article/details/105143830 PDF课件 链接 ...
- Android数据库的事务
事务: 执行多条sql语句,要么同时执行成功,要么同时执行失败,不能有的成功,有的失败 银行转账 //点击按钮执行该方法 public void transtation(View v){ // ...
- 测试前期API未实现时,如何写测试方法
大家在做接口测试的时候可能经历过这种情况,开发出来接口文档后,测试人员就要开始编写接口测试的自动化代码.这时就会用到了mock server,mock server不在这里说了,百度一大堆,想怎么实现 ...
- zookeeper集群+kafka集群 部署
zookeeper集群 +kafka 集群部署 1.Zookeeper 概述: Zookeeper 定义 zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目 Zooke ...
- rsync 远程同步部署——上下行同步
rsync 远程同步部署--上下行同步 1.rsync (Remote Sync,远程同步) : 是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用 ...
- Zabbix企业级开源监控解决方案
Zabbix企业级开源监控解决方案 目录 Zabbix企业级开源监控解决方案 一.Zabbix 1. 监控系统的必要性 2. 监控软件的作用 3. Zabbix的定义 4. Zabbix的监控原理 5 ...
- python进阶(24)Python字典的底层原理以及字典效率
前言 问题1:python中的字典到底是有序还是无序 问题2:python中字典的效率如何 python字典底层原理 在Python 3.5以前,字典是不能保证顺序的,键值对A先插入字典,键值对B ...