Python logging模块
logging模块 |
1.列出所有状态并打印到终端。
import logging logging.debug("test debug")#调试,除错 logging.info("test")#信息 logging.warning("user [xsk] 3")#警告 logging.error("test error")#错误 logging.critical("server is down") #严重
注:严重的警告直接打印到终端,重上往下的优先级。
2.将日志打印到文件内。
import logging logging.basicConfig(filename='example.log',level=logging.INFO)
注:自动创建log文件,并将数据自动打印到文件内。
注:logging.basicConfig():创建日志文件。
注:filename=:输入日志文件名。
注:level=:输入报警级别。
注:输入时,优先级高的将不会输出低优先级的 报警信息。
3.记录日志时,加入时间。
import logging logging.basicConfig(filename='example.log',level=logging.INFO,format='%(asctime)s %(message)s',datefmt='%m/%d/%Y %I:%M:%S %p')
注:添加了时间的日志格式变量,可自定义运行格式。
注:format=‘’:用来添加记录日志格式的模块参数。
注:datefmt=‘’:时间参数。
4、使日志,定义成 终端文件都可以输出。
import logging logger = logging.getLogger('TEST-LOG')#自定义名字 logger.setLevel(logging.DEBUG)#设置最低等级 ch = logging.StreamHandler()#终端输出日志 ch.setLevel(logging.WARNING)#最小有限级 fh = logging.FileHandler("access.log",encoding="utf-8")#文件内的日志 fh.setLevel(logging.ERROR)#最小有限级 fh_formatter = logging.Formatter('%(asctime)s %(filename)s:%(lineno)d %(module)s - %(levelname)s %(message)s')#fh日志格式 ch_formatter = logging.Formatter('%(asctime)s %(filename)s:%(lineno)d %(module)s - %(levelname)s %(message)s')#ch日志格式 fh.setFormatter(fh.formatter)#绑定fh handler ch.setFormatter(ch_formatter)#绑定ch handler logger.addHandler(fh)#logger 绑定fh handler logger.addHandler(ch)#logger 绑定ch handler logger.warning("ddd")#输出 logger.error("error happend..")#输出v
注:将logger,handler,与formatter绑定。
5.定义日志自定义 删除。
(1)按文件大小进行,删除。
import logging from logging import handlers logger = logging.getLogger('TEST') log_file = "timelog.log" fh = handlers.RotatingFileHandler(filename=log_file,maxBytes=10,backupCount=3,encoding="utf-8") formatter = logging.Formatter('%(asctime)s %(filename)s:%(lineno)d %(module)s - %(levelname)s %(message)s') fh.setFormatter(formatter) logger.addHandler(fh) logger.warning("test1") logger.warning("test2") logger.warning("test3")
注:需要使用handlers模块
注:handlers.RotatingFileHandler():来进行定义。
filename=:文件名
maxBytes=:定义最大值
backupCount=:定义最多备份的文件数
encodoing=:定义字符编码。
(2)按时间进行,删除。
import logging from logging import handlers logger = logging.getLogger('TEST') log_file = "timelog.log" fh = handlers.TimedRotatingFileHandler(filename=log_file,when="S",interval=5,backupCount=3) formatter = logging.Formatter('%(asctime)s %(filename)s:%(lineno)d %(module)s - %(levelname)s %(message)s') fh.setFormatter(formatter) logger.addHandler(fh) import time logger.warning("test1") time.sleep(2) logger.warning("test2") time.sleep(2) logger.warning("test3") time.sleep(2) logger.warning("test4")
注:实现了,每5秒钟备份一个日志
注:handlers.TimedRotatingFileHandler():实现时间备份删除。
wen=:选择时间类型参数。
interval=:选择对应参数的数量。
backupCount=:定义最多备份的文件数
encodoing=:定义字符编码