在PyCharm中控制臺輸出日志分層級分顏色顯示的方法
1、把下面代碼復(fù)制到一個(gè).py文件中
#!/usr/bin/env python # encoding: utf-8 import logging # now we patch Python code to add color support to logging.StreamHandler def add_coloring_to_emit_windows(fn): # add methods we need to the class def _out_handle(self): import ctypes return ctypes.windll.kernel32.GetStdHandle(self.STD_OUTPUT_HANDLE) out_handle = property(_out_handle) def _set_color(self, code): import ctypes # Constants from the Windows API 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) def new(*args): FOREGROUND_BLUE = 0x0001 # text color contains blue. FOREGROUND_GREEN = 0x0002 # text color contains green. FOREGROUND_RED = 0x0004 # text color contains red. FOREGROUND_INTENSITY = 0x0008 # text color is intensified. 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 # foreground color is intensified. 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 # background color is intensified. 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" return ret return new def add_coloring_to_emit_ansi(fn): # add methods we need to the class def new(*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 except Exception as e: pass # print "after" return fn(*args) return new import platform if platform.system() == 'Windows': # Windows does not support ANSI escapes and we are using API calls to set the console color logging.StreamHandler.emit = add_coloring_to_emit_windows(logging.StreamHandler.emit) else: # all non-Windows platforms are supporting ANSI escapes so we use them 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、將文件放到項(xiàng)目的utils包中(或者項(xiàng)目其他路徑)
3、在配置文件中導(dǎo)入這個(gè)py文件
比如在Django的setting.py文件中配置日志信息時(shí),可以先導(dǎo)入這個(gè)文件
之后運(yùn)行代碼,控制臺會(huì)根據(jù)日志等級顯示不同的顏色
4、pycharm版本最好是17版本以上的
以上這篇在PyCharm中控制臺輸出日志分層級分顏色顯示的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
深度學(xué)習(xí)之GPU,CUDA和cuDNN的理解
Cuda和cudnn是支持NVIDIA支持GPU的兩個(gè)庫,分別用于高性能計(jì)算和深度神經(jīng)網(wǎng)絡(luò)計(jì)算的支持,下面這篇文章主要給大家介紹了關(guān)于深度學(xué)習(xí)之GPU,CUDA和cuDNN的理解,需要的朋友可以參考下2023-02-02python游戲?qū)崙?zhàn)項(xiàng)目之俄羅斯方塊的魅力
遲早一定會(huì)掛掉的俄羅斯方塊,為什么至今仍是世界游戲之王?它是怎么編寫的?本文將給大家詳細(xì)的介紹,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值2021-09-09關(guān)于Python?Selenium自動(dòng)化導(dǎo)出新版WOS(web?of?science)檢索結(jié)果的問題
這篇文章主要介紹了Python?Selenium自動(dòng)化導(dǎo)出新版WOS(web?of?science)檢索結(jié)果,本代碼屬于半自動(dòng)化導(dǎo)出,考慮到開發(fā)效率等因素,有兩處在首次導(dǎo)出時(shí)需要手動(dòng)操作,具體實(shí)現(xiàn)過程跟隨小編一起看看吧2022-01-01Python守護(hù)進(jìn)程和腳本單例運(yùn)行詳解
本篇文章主要介紹了Python守護(hù)進(jìn)程和腳本單例運(yùn)行,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01MySQLdb ImportError: libmysqlclient.so.18解決方法
這篇文章主要介紹了MySQLdb ImportError: libmysqlclient.so.18解決方法,需要的朋友可以參考下2014-08-08關(guān)于python中plt.hist參數(shù)的使用詳解
今天小編就為大家分享一篇關(guān)于python中plt.hist參數(shù)的使用詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11python腳本實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出excel格式的簡單方法(推薦)
下面小編就為大家?guī)硪黄猵ython腳本實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出Excel格式的簡單方法(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12OpenCV實(shí)現(xiàn)圖片亮度增強(qiáng)或減弱
這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)圖片亮度增強(qiáng)或減弱,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08