# @File : learn_logging.py #-*- coding:utf-8 -*- """ 日志:log 记录代码执行的过程 一旦记录下来,就可以根据日志去定位排查问题 日志的级别(由低到高):debug < info < waring < error <critical 可自定义日志输出的级别,可灵活控制 logging库 是python自带的 """ import logging # # root = RootLogger(WARNING) 是系统自定义的收集日志的收集器; # # 默认收集并输入warning级别及其以上的日志信息 # # # handles 是输出渠道,默认输出渠道是console控制台 # logging.debug('这是一个debug信息') # logging.info('这是一个info信息') # logging.warning('这是一个waring信息') # logging.error('这是一个error信息') # logging.critical('这是一个crtical信息') # 创建一个日志收集器并命名 my_logger=logging.getLogger('test_logger') my_logger.setLevel('DEBUG')# 设置收集器的级别 # 设置输出格式 formatter = logging.Formatter('%(asctime)s - %(filename)s - %(name)s - %(levelname)s - 日志信息: %(message)s') # 指定输出渠道,输出到控制台 ch=logging.StreamHandler()#输入到控制台 ch.setLevel('DEBUG')# 设置输出渠道的级别; # 如果收集器中的级别与输出渠道级别不同,取两者的交集 ch.setFormatter(formatter)#日志输出时,按指定的输出格式输出 #输出到本地文件 fh=logging.FileHandler('log_file.txt',encoding='utf-8')#输出到本地log_file文档中;日志中有中文,需要设置编码 fh.setLevel('ERROR')#输出级别为error fh.setFormatter(formatter)#日志输出时,按指定的输出格式输出 #对接:收集器与输出渠道 my_logger.addHandler(ch) my_logger.addHandler(fh) #日志信息 my_logger.debug('这是一个debug信息') my_logger.info('这是一个info信息') my_logger.warning('这是一个waring信息') my_logger.error('这是一个error信息') my_logger.critical('这是一个crtical信息')
编写一个属于自己的可控制的日志类
# @File : learn_logging.py #-*- coding:utf-8 -*- import logging class MyLog: def my_log(self,level,msg): # 创建一个日志收集器并命名 my_logger=logging.getLogger('test_logger') my_logger.setLevel('DEBUG')# 设置收集器的级别 # 设置输出格式 formatter = logging.Formatter('%(asctime)s - %(filename)s - %(name)s - %(levelname)s - 日志信息: %(message)s') # 指定输出渠道,输出到控制台 ch=logging.StreamHandler()#输入到控制台 ch.setLevel('DEBUG')# 设置输出渠道的级别; # 如果收集器中的级别与输出渠道级别不同,取两者的交集 ch.setFormatter(formatter)#日志输出时,按指定的输出格式输出 #输出到本地文件 fh=logging.FileHandler('log_file.txt',encoding='utf-8')#输出到本地log_file文档中;日志中有中文,需要设置编码 fh.setLevel('DEBUG')#输出级别为debug fh.setFormatter(formatter)#日志输出时,按指定的输出格式输出 #对接:收集器与输出渠道 my_logger.addHandler(ch) my_logger.addHandler(fh) if level == 'DEBUG': my_logger.debug(msg) elif level == 'INFO': my_logger.info(msg) elif level == 'WARNING': my_logger.warning(msg) elif level == 'ERROR': my_logger.error(msg) elif level == 'CRITICAL': my_logger.critical(msg) def debug1(self,msg): self.my_log('DEBUG',msg) def info1(self,msg): self.my_log('INFO',msg) def warning(self,msg): self.my_log('WARNING',msg) def error(self,msg): self.my_log('ERROR',msg) def crtical(self,msg): self.my_log('CRTICAL',msg) if __name__ == '__main__': my_logger=MyLog() my_logger.debug1('haha') my_logger.info1('heng')