class LogRecord(object):
def __init__(self, file=None):
if None == file:
log_path=os.path.dirname(__file__) #获取当前文件目录
log_file=time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime())+".log"
self.logfile = os.path.join(log_path, 'log', log_file)
else:
self.logfile = file
self.mylogger = logging.getLogger(__name__)
self.mylogger.setLevel(logging.DEBUG)
#创建一个handler,用于写入日志文件
self.fn = logging.FileHandler(self.logfile,'a')
self.fn.setLevel(logging.INFO)
#定义handler的输出格式formatter
self.formatter = logging.Formatter('%(asctime)s-%(name)s-%(message)s')
#定义handler的输出格式
self.fn.setFormatter(self.formatter)
#给mylogger添加handler
self.mylogger.addHandler(self.fn)
#配置console日志
self.console = logging.StreamHandler()
self.console.setLevel(logging.DEBUG)
self.formatter = logging.Formatter('%(asctime)s-%(name)s-%(message)s')
self.console.setFormatter(self.formatter)
self.mylogger.addHandler(self.console)
def GetLogObj(self):
return self.mylogger
def close(self):
self.fn.flush()
self.fn.close()
logging四大组件相关的类:Logger, Handler, Filter, Formatter。
Logger对象最常用的方法分为两类:配置方法 和 消息发送方法
方法 描述
Logger.setLevel() 设置日志器将会处理的日志消息的最低严重级别
Logger.addHandler() 和 Logger.removeHandler() 为该logger对象添加 和 移除一个handler对象
Logger.addFilter() 和 Logger.removeFilter() 为该logger对象添加 和 移除一个filter对象
logger对象配置完成后,可以使用下面的方法来创建日志记录:
方法 描述
Logger.debug(), Logger.info(), Logger.warning(), Logger.error(), Logger.critical() 创建一个与它们的方法名对应等级的日志记录
Logger.exception() 创建一个类似于Logger.error()的日志消息
Logger.log() 需要获取一个明确的日志level参数来创建一个日志记录
import logging
logger = logging.getLogger(__name__)
logger.setLevel(level=logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
console = logging.StreamHandler()
console.setLevel(logging.DEBUG)
console.setFormatter(formatter)
logger.addHandler(console)
logger.info("Start print log")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")