#! /usr/bin/env python#coding=gbkimportlogging,osimportctypesFOREGROUND_WHITE=0x0007FOREGROUND_BLUE=0x01# text color contains blue.FOREGROUND_GREEN=0x02# text color contains green.FOREGROUND_RED=0x04# text color contains red.FOREGROUND_YELLOW=FOREGROUND_RED|FOREGROUND_GREENSTD_OUTPUT_HANDLE=-11std_out_handle=ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)defset_color(color,handle=std_out_handle):bool=ctypes.windll.kernel32.SetConsoleTextAttribute(handle,color)returnboolclassLogger:def__init__(self,path,clevel=logging.DEBUG,Flevel=logging.DEBUG):self.logger=logging.getLogger(path)self.logger.setLevel(logging.DEBUG)fmt=logging.Formatter('[%(asctime)s] [%(levelname)s] %(message)s','%Y-%m-%d %H:%M:%S')#设置CMD日志sh=logging.StreamHandler()sh.setFormatter(fmt)sh.setLevel(clevel)#设置文件日志fh=logging.FileHandler(path)fh.setFormatter(fmt)fh.setLevel(Flevel)self.logger.addHandler(sh)self.logger.addHandler(fh)defdebug(self,message):self.logger.debug(message)definfo(self,message):self.logger.info(message)defwar(self,message,color=FOREGROUND_YELLOW):set_color(color)self.logger.warn(message)set_color(FOREGROUND_WHITE)deferror(self,message,color=FOREGROUND_RED):set_color(color)self.logger.error(message)set_color(FOREGROUND_WHITE)defcri(self,message):self.logger.critical(message)if__name__=='__main__':logyyx=Logger('yyx.log',logging.WARNING,logging.DEBUG)logyyx.debug('一个debug信息')logyyx.info('一个info信息')logyyx.war('一个warning信息')logyyx.error('一个error信息')logyyx.cri('一个致命critical信息')