logging模块的使用
import logging
# 创建一个logger
logger = logging.getLogger() #参数填写name,默认为root
# 给logger设置级别
logger.setLevel(logging.INFO) #级别排序 DEBUG INFO WARNING ERROR CRITICAL
# 新建一个写入到文件中的处理器
file_handler = logging.FileHandler("log.txt",encoding="utf-8")
# 新建一个输出到控制台的处理器
stream_handler = logging.StreamHandler()
# 给控制器设置级别
file_handler.setLevel(logging.INFO)
stream_handler.setLevel(logging.INFO)
# 给控制器设置输出格式化
fmt = logging.Formatter("%(asctime)s - %(filename)s[line: %(lineno)d] - %(name)s - %(message)s")
file_handler.setFormatter(fmt)
stream_handler.setFormatter(fmt)
# 将logger和控制器绑定
logger.addHandler(file_handler)
logger.addHandler(stream_handler)
if __name__ == '__main__':
logger.info("info")
logger.warning("warning")
logger.error("error")
logger.critical("critical")
logging模块的封装
import logging
class LoggingHandler(logging.Logger):
def __init__(self,name="root",lv="DEBUG",file=None,
formt="%(asctime)s - %(filename)s[line: %(lineno)d] - %(name)s - %(message)s",):
# 实例化一个logger
# logger = logging.getLogger(name=name) ----》优化成直接继承logging中的logger,调用父级实例化一个logger,解决行号问题
super().__init__(name)
# 给logger设置级别
self.setLevel(lv)
#设置输出格式化
fmt = logging.Formatter(formt)
#实例化一个处理器
if file:
file_handler = logging.FileHandler(file,encoding="utf-8")
file_handler.setLevel(lv)
file_handler.setFormatter(fmt)
self.addHandler(file_handler)
stream_handler = logging.StreamHandler()
stream_handler.setLevel(lv)
stream_handler.setFormatter(fmt)
self.addHandler(stream_handler)
if __name__ == '__main__':
logger = LoggingHandler()
logger.warning("这是一个Warn")