在PyCharm中控制台输出日志分层级分颜色显示的方法
1、把下面代码复制到一个.py文件中
#!/usr/bin/envpython #encoding:utf-8 importlogging #nowwepatchPythoncodetoaddcolorsupporttologging.StreamHandler defadd_coloring_to_emit_windows(fn): #addmethodsweneedtotheclass def_out_handle(self): importctypes returnctypes.windll.kernel32.GetStdHandle(self.STD_OUTPUT_HANDLE) out_handle=property(_out_handle) def_set_color(self,code): importctypes #ConstantsfromtheWindowsAPI self.STD_OUTPUT_HANDLE=-11 hdl=ctypes.windll.kernel32.GetStdHandle(self.STD_OUTPUT_HANDLE) ctypes.windll.kernel32.SetConsoleTextAttribute(hdl,code) setattr(logging.StreamHandler,'_set_color',_set_color) defnew(*args): FOREGROUND_BLUE=0x0001#textcolorcontainsblue. FOREGROUND_GREEN=0x0002#textcolorcontainsgreen. FOREGROUND_RED=0x0004#textcolorcontainsred. FOREGROUND_INTENSITY=0x0008#textcolorisintensified. FOREGROUND_WHITE=FOREGROUND_BLUE|FOREGROUND_GREEN|FOREGROUND_RED #winbase.h STD_INPUT_HANDLE=-10 STD_OUTPUT_HANDLE=-11 STD_ERROR_HANDLE=-12 #wincon.h FOREGROUND_BLACK=0x0000 FOREGROUND_BLUE=0x0001 FOREGROUND_GREEN=0x0002 FOREGROUND_CYAN=0x0003 FOREGROUND_RED=0x0004 FOREGROUND_MAGENTA=0x0005 FOREGROUND_YELLOW=0x0006 FOREGROUND_GREY=0x0007 FOREGROUND_INTENSITY=0x0008#foregroundcolorisintensified. BACKGROUND_BLACK=0x0000 BACKGROUND_BLUE=0x0010 BACKGROUND_GREEN=0x0020 BACKGROUND_CYAN=0x0030 BACKGROUND_RED=0x0040 BACKGROUND_MAGENTA=0x0050 BACKGROUND_YELLOW=0x0060 BACKGROUND_GREY=0x0070 BACKGROUND_INTENSITY=0x0080#backgroundcolorisintensified. levelno=args[1].levelno if(levelno>=50): color=BACKGROUND_YELLOW|FOREGROUND_RED|FOREGROUND_INTENSITY|BACKGROUND_INTENSITY elif(levelno>=40): color=FOREGROUND_RED|FOREGROUND_INTENSITY elif(levelno>=30): color=FOREGROUND_YELLOW|FOREGROUND_INTENSITY elif(levelno>=20): color=FOREGROUND_GREEN elif(levelno>=10): color=FOREGROUND_MAGENTA else: color=FOREGROUND_WHITE args[0]._set_color(color) ret=fn(*args) args[0]._set_color(FOREGROUND_WHITE) #print"after" returnret returnnew defadd_coloring_to_emit_ansi(fn): #addmethodsweneedtotheclass defnew(*args): levelno=args[1].levelno if(levelno>=50): color='\x1b[31m'#red elif(levelno>=40): color='\x1b[31m'#red elif(levelno>=30): color='\x1b[33m'#yellow elif(levelno>=20): color='\x1b[32m'#green elif(levelno>=10): color='\x1b[35m'#pink else: color='\x1b[0m'#normal try: args[1].msg=color+args[1].msg+'\x1b[0m'#normal exceptExceptionase: pass #print"after" returnfn(*args) returnnew importplatform ifplatform.system()=='Windows': #WindowsdoesnotsupportANSIescapesandweareusingAPIcallstosettheconsolecolor logging.StreamHandler.emit=add_coloring_to_emit_windows(logging.StreamHandler.emit) else: #allnon-WindowsplatformsaresupportingANSIescapessoweusethem logging.StreamHandler.emit=add_coloring_to_emit_ansi(logging.StreamHandler.emit) #log=logging.getLogger() #log.addFilter(log_filter()) #//hdlr=logging.StreamHandler() #//hdlr.setFormatter(formatter())
2、将文件放到项目的utils包中(或者项目其他路径)
3、在配置文件中导入这个py文件
比如在Django的setting.py文件中配置日志信息时,可以先导入这个文件
之后运行代码,控制台会根据日志等级显示不同的颜色
4、pycharm版本最好是17版本以上的
以上这篇在PyCharm中控制台输出日志分层级分颜色显示的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。