首页 / 知识
Python之logging模块重定向
2023-11-12 13:33:00
对于代码量较大的工程,建议使用logging模块进行输出。该模块是线程安全的,可将日志信息输出到控制台、写入文件、使用TCP/UDP协议发送到网络等等。
默认情况下logging模块将日志输出到控制台(标准出错),且只显示大于或等于设置的日志级别的日志。日志级别由高到低为CRITICAL>ERROR>WARNING>INFO>DEBUG>NOTSET,默认级别为WARNING。
以下示例将日志信息分别输出到控制台和写入文件:
importlogging
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s[%(levelname)s]at%(filename)s,%(lineno)d:%(message)s',
datefmt='%Y-%m-%d(%a)%H:%M:%S',
filename='out.txt',
filemode='w')
#将大于或等于INFO级别的日志信息输出到StreamHandler(默认为标准错误)
console=logging.StreamHandler()
console.setLevel(logging.INFO)
formatter=logging.Formatter('[%(levelname)-8s]%(message)s')#屏显实时查看,无需时间
console.setFormatter(formatter)
logging.getLogger().addHandler(console)
logging.debug('gubed');logging.info('ofni');logging.critical('lacitirc')
通过对多个handler设置不同的level参数,可将不同的日志内容输入到不同的地方。本例使用在logging模块内置的StreamHandler(和FileHandler),运行后屏幕上显示:
[INFO]ofni
[CRITICAL]lacitirc
out.txt文件内容则为:
2022-04-22(Fri)17:10:53[DEBUG]attest.py,25:gubed
2022-04-22(Fri)17:10:53[INFO]attest.py,25:ofni
2022-04-22(Fri)17:10:53[CRITICAL]attest.py,25:lacitirc
除直接在程序中设置Logger、Handler、Formatter等外,还可将这些信息写入配置文件。示例如下:
#logger.conf
###############Logger###############
[loggers]
keys=root,Logger2F,Logger2CF
[logger_root]
level=DEBUG
handlers=hWholeConsole
[logger_Logger2F]
handlers=hWholeFile
qualname=Logger2F
propagate=0
[logger_Logger2CF]
handlers=hPartialConsole,hPartialFile
qualname=Logger2CF
propagate=0
###############Handler###############
[handlers]
keys=hWholeConsole,hPartialConsole,hWholeFile,hPartialFile
[handler_hWholeConsole]
class=StreamHandler
level=DEBUG
formatter=simpFormatter
args=(sys.stdout,)
[handler_hPartialConsole]
class=StreamHandler
level=INFO
formatter=simpFormatter
args=(sys.stderr,)
[handler_hWholeFile]
class=FileHandler
level=DEBUG
formatter=timeFormatter
args=('out.txt','a')
[handler_hPartialFile]
class=FileHandler
level=WARNING
formatter=timeFormatter
args=('out.txt','w')
###############Formatter###############
[formatters]
keys=simpFormatter,timeFormatter
[formatter_simpFormatter]
format=[%(levelname)s]at%(filename)s,%(lineno)d:%(message)s
[formatter_timeFormatter]
format=%(asctime)s[%(levelname)s]at%(filename)s,%(lineno)d:%(message)s
datefmt=%Y-%m-%d(%a)%H:%M:%S
此处共创建三个Logger:root,将所有日志输出至控制台;Logger2F,将所有日志写入文件;Logger2CF,将级别大于或等于INFO的日志输出至控制台,将级别大于或等于WARNING的日志写入文件。
程序以如下方式解析配置文件和重定向输出:
importlogging,logging.config
logging.config.fileConfig("logger.conf")
logger=logging.getLogger("Logger2CF")
logger.debug('gubed');logger.info('ofni');logger.warn('nraw')
logger.error('rorre');logger.critical('lacitirc')
logger1=logging.getLogger("Logger2F")
logger1.debug('GUBED');logger1.critical('LACITIRC')
logger2=logging.getLogger()
logger2.debug('gUbEd');logger2.critical('lAcItIrC')
运行后屏幕上显示:
[INFO]attest.py,7:ofni
[WARNING]attest.py,7:nraw
[ERROR]attest.py,8:rorre
[CRITICAL]attest.py,8:lacitirc
[DEBUG]attest.py,14:gUbEd
[CRITICAL]attest.py,14:lAcItIrC
out.txt文件内容则为:
2022-04-22(Fri)20:31:21[WARNING]attest.py,7:nraw
2022-04-22(Fri)20:31:21[ERROR]attest.py,8:rorre
2022-04-22(Fri)20:31:21[CRITICAL]attest.py,8:lacitirc
2022-04-22(Fri)20:31:21[DEBUG]attest.py,11:GUBED
2022-04-22(Fri)20:31:21[CRITICAL]attest.py,11:LACITIRC
以上内容为大家介绍了Python之logging模块重定向,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注我们
最新内容
相关内容
Python网络编程调用接收数据的三种
Python网络编程调用接收数据的三种方法,数据,代码,基础,通用,通讯,服务,网络,培训,方法,报文,最近在使用python进行网络编程开发一个通用的tc为何你的Python代码应是扁平与稀疏
为何你的Python代码应是扁平与稀疏的,代码,培训,信息,观察,设计,工具,嵌套,闻闻,程序员,沉思,Python之禅之所以得名,正是由于它那简明扼要的规Python标准库之collections模块
Python标准库之collections模块,名字,标准,信息,电话号码,培训,工厂,位置,简介,异常,对象,collections模块简介collections是Python标准库里网络功能对于Python的意义
网络功能对于Python的意义,网络,项目,标准,工作,通信,培训,管理,数据,位置,功能,现在,网络功能的强弱很大程度上决定了一个语言的成功与否。从Python标准库的学习准备
Python标准库的学习准备,标准,概念,网络,基础,系统,工作,培训,数据,基础知识,信息,Python标准库是Python强大的动力所在,我们已经在前文中有所python强大的标准库
python强大的标准库,标准,网络,系统,时间,通信,数字,管理,培训,文本,功能,Python拥有一个强大的标准库。Python语言的核心只包含数字、字符串python获取当前时间日期有哪些方法
python获取当前时间日期有哪些方法?,时间,标准,星期六,培训,日期,微秒,结果,模块,星期,格式,获取到时间也是我们在学习python遇到的常见问题,如何在python代码中指定保存的文件
如何在python代码中指定保存的文件格式,代码,培训,文件格式,格式,二进制文件,文件,后缀,以上,方法,更多,python指定保存文件格式的方法:1、保python如何获取程序执行时间?
python如何获取程序执行时间?,代码,培训,标准,程序,方法,中间,使用方法,以上,手册,更多,python获取程序执行时间的方法:1、使用time.clock()方怎么计算python程序运行时间
怎么计算python程序运行时间,时间,培训,程序,方式,脚本,下面,以上,两个,结束,不是,python脚本使用统计时间的方式是time.clock(),而这种方式统Python写完代码怎么用
Python写完代码怎么用,代码,下来,数字,概念,培训,文本,模式,文件,程序,路径,python运行有两种方式,一种是在python交互式命令行下运行;另一种python如何计算程序运算时间
python如何计算程序运算时间,时间,系统,单位,培训,程序,方法,浮点,以来,类型,纪元,python计算程序运算时间的方法:方法1:importdatetimestartti