『无为则无心』Python日志 — 69、补充:logging.basicConfig()函数说明
2022-03-06 15:22
756 查看
[toc]
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日志 — 64、Python日志模块logging介绍
- 『无为则无心』Python日志 — 65、日志模块logging的使用
- [Python]logging模块使用basicConfig后记录日志重复问题
- python3 logging.basicConfig日志文件乱码问题解决
- 『无为则无心』Python面向对象 — 54、重写和super()函数
- Python学习日志——函数补充
- 『无为则无心』Python日志 — 66、将日志信息保存到文件中
- python模块介绍- logging 日志工具
- python 函数参数的传递(参数带星号的说明)
- Python开发之日志记录模块:logging
- python(36):python日志打印,保存,logging模块学习
- Python之日志处理(logging模块)
- Python之日志处理(logging模块)
- Python正则表达式中的 compile,search,group,groups 函数的简单说明
- 基础入门_Python-模块和包.运维开发中日志模块logging的最佳实践?
- Python:日志模块logging的应用
- python3 logging日志封装实例
- python 的日志logging模块学习
- 从python中的一些特殊方法讲到pytorch的官方例子mnist(主要针对pytorch的自定义dataset中的几个特殊函数进行说明)
- Python—函数内容的补充