日志处理logging
作者:互联网
前言
什么是日志?有什么作用?日志是跟踪软件运行时所发生的事件的一种方法,简单来说它可以记录某时某刻运行了什么代码,当出现问题时可以方便我们进行定位。
由python内置了一个logging模块,用户可以通过调用debug()、 info()、 warning()、 error() 、 critical()和notset()等方法进行日志的收集和处理。
一、日志等级
级别 | 数字值 | 作用 |
NOSET | 0 | 废话,等于没写,毫无用处的文字 |
DEBUG | 10 | 调试,一些额外信息。备注,往往与主体功能无关 |
INFO | 20 | 主体功能的信息,做了些啥 |
WARNING | 30 | 警告,提醒下次有可能会触发错误 |
ERROR | 40 | 错误 |
CRITICAL | 50 | 极其严重的错误,会影响系统的崩溃 |
二、日志使用
import logging #1、初始化日志收集器 logger = logging.getLogger("这是日志收集器名称") #2、设置日志收集器的等级,高于或等于这个级别的日志我才记录 logger.setlevel("DEBUG") #3、初始化日志处理器handler:终端流处理器streamhandler和文件流处理器filehandler stream_handler = logging.StreamHandler() #4、设置终端流处理器的等级。高于或等于这个级别的日志我才显示 stream_handler.setlevel("INFO") #5、日志收集器logger添加handler logger.addHandler(stream_handler) #6、初始化日志格式format: format_str = "%(asctime)s--%(levelname)s--%(filename)s--%(lineno)d--%(name)s--%(message)s" #7、handler添加format stream_handler.setFormatter(format_str) #8、调用 logger.info("信息") logger.debug(“调试信息”)
终端流处理器:日志直接在终端中显示(我用的是pycharm,那么就是pycharm控制台显示)
文件流处理器:将日志存储在文件中
一个收集器可以对应多个处理器,也就是说,可以同时设置终端流处理器和文件处理器
file_handler = logging.FileHandler("log.txt",encoding="utf8") file_handler.setLevel("INFO") #添加handler logger.addHandler(file_handler) #handler添加format file_handler.setFormatter(fmt) #调用
setlevel():相当于过滤器,不设置参数时默认的是WARNING,要大写。只有高于或等于设置的级别才显示。
logger和handler的级别需要比较,哪个级别更高,就以哪个为准
日志格式:https://docs.python.org/zh-cn/3/library/logging.html可以上官方网站查看需要的格式
三、日志封装
import logging #日志的二次封装 def logging_function(logger_name, logger_level="DEBUG", handler_level="INFO", log_file_name="logging.txt", encoding="utf8", format_str="%(asctime)s--%(levelname)s--%(filename)s--%(lineno)d--%(name)s--%(message)s" ): logger = logging.getLogger(logger_name) logger.setLevel(logger_level) # 终端流处理器 stream_hangdler = logging.StreamHandler() stream_hangdler.setLevel(handler_level) logger.addHandler(stream_hangdler) # 文件处理器 file_hangdler = logging.FileHandler(log_file_name, encoding=encoding) file_hangdler.setLevel(handler_level) logger.addHandler(file_hangdler) fmt = logging.Formatter(format_str) stream_hangdler.setFormatter(fmt) file_hangdler.setFormatter(fmt) return logger #调用 logging_name="日志收集" logger=logging_function(logging_name)
标签:logging,处理,handler,file,--%,日志,logger 来源: https://www.cnblogs.com/xiaofenggou/p/16674025.html