# -*- coding:utf-8 -*- # -*- coding: UTF-8 -*- import logging from logging import handlers class IgnoreBackupLogFileter01(logging.Filter): '''忽略带 backup 的日志''' def filter(self, record):#固定写法 return "backup" not in record.getMessage() class IgnoreBackupLogFileter02(logging.Filter): '''忽略带 db 的日志''' def filter(self, record):#固定写法 return "db" not in record.getMessage() #生成logger对象 logger = logging.getLogger("web") logger.setLevel(logging.DEBUG) #全局日志级别 # 把filter对象添加到logger中 logger.addFilter(IgnoreBackupLogFileter01()) logger.addFilter(IgnoreBackupLogFileter02()) #生成handler对象 ch = logging.StreamHandler() ch.setLevel(logging.INFO) #给ch handeler设置日志级别 #fh = logging.FileHandler("web.log") #fh = handlers.RotatingFileHandler("web.log",maxBytes=50,backupCount=3)#按照大小保留日志的个数 fh = handlers.TimedRotatingFileHandler("web.log",encoding="utf-8",when="s",interval=5,backupCount=5) #按照日期、天数、保留日志的个数 fh.setLevel(logging.WARNING) #给fh handeler设置日志级别 logger.addHandler(ch) #把handeler对象绑定到logger对象 logger.addHandler(fh) #把handeler对象绑定到logger对象 #生成formatter对象 file_fomatter = logging.Formatter( '%(levelname)s ' '%(asctime)s ' 'filename:%(filename)s ' 'funcName:%(funcName)s ' 'line:%(lineno)s ' '%(thread)d ' '%(threadName)s ' '%(process)d ' '%(message)s', ) #生成formatter对象 console_fomatter = logging.Formatter( '%(levelname)s ' '%(asctime)s ' 'filename:%(filename)s ' 'funcName:%(funcName)s ' 'line:%(lineno)s ' '%(message)s', ) #把formatter对象绑定到handler对象 ch.setFormatter(console_fomatter) fh.setFormatter(file_fomatter) logger.info("testlog") logger.info("testlog") logger.warning("警告日志") logger.info("db23123") logger.info("backupasdfasdfa") logger.warning("testlog")