[Python] iupdatable包:日誌模塊使用介紹
- 2020 年 3 月 15 日
- 筆記
一、說明
日誌模塊是對 logging 模塊的單例封裝
特點:
- 可同時向控制台和文件輸出日誌,並可選擇關閉其中一種方式的輸出;
- 集成colorlog,實現根據日誌等級不同,控制台輸出日誌顏色不同;
- 靈活切換是否輸出調試內容
二、簡單示例
安裝 iupdatable 包
pip install --upgrade iupdatable
使用實例:
1 from iupdatable.logging.Logger import Logger 2 from iupdatable.logging.LogLevel import LogLevel 3 4 5 def test_logging(): 6 # 日誌等級: 7 # CRITICAL 同:FATEL,下同 8 # ERROR 9 # WARNING 10 # INFO 11 # DEBUG 12 # NOTSET 按照 WARNING 級別輸出 13 14 # 設置為 DEBUG,輸出所有信息 15 # 設置為 WARNING, INFO、DEBUG 級別的日誌就不會輸出 16 Logger.get_instance().config(log_level=LogLevel.DEBUG) 17 18 Logger.get_instance().debug('debug message1') 19 Logger.get_instance().info('info message1') 20 Logger.get_instance().warning('warning message1') 21 Logger.get_instance().error('error message1') 22 Logger.get_instance().debug('debug message1', is_with_debug_info=True) # 要想輸出具體的調試信息 23 Logger.get_instance().fatal('fatal message1') 24 Logger.get_instance().critical('critical message1') # fatal = critical 25 26 # 也可以輸出變量 27 abc = [1, 2, 4] 28 Logger.get_instance().info(abc) 29 30 31 test_logging()
控制台輸出:
上面的內容也會同時輸出到 all.log 的日誌文件中,此外 all.log 的日誌會在新一天開始對日誌按照天進行歸檔。
三、參數說明
1. Logger.get_instance().config(…)
該函數用於設置日誌的各項配置
建議在日誌使用前調用該函數。不調用該函數,直接使用日誌的話,後台會按照默認參數調用該函數。
日誌的使用過程中也可以重新調用該函數,對日誌進行重新設置。
全部參數說明如下:
log_level: 日誌輸出等級,參考:LogLevel 的值,默認為 DEBUG 等級 log_file_full_path: 日誌輸出的文件名的完整路徑,默認:all.log date_format: 每天日誌前日期時間的格式,默認: %Y-%m-%d %H:%M:%S is_with_datetime: 是否在每條日誌前添加日期時間,默認:True is_with_level: 是否在每天日誌前添加日誌等級,默認:True is_output_file: 是否將日誌輸出到文件,默認:True is_output_console: 是否將日誌輸出到控制台,默認:True is_colored: 是否將控制台的輸出設為彩色,默認:True
2. is_with_debug_info
這個一個可選參數,所有的日誌函數均有該項,表示是否在輸出的日誌中添加調試信息,包括:文件的具體位置,函數名,代碼的行號,默認:False,即:默認不添加
使用下面代碼舉例:
1 from iupdatable.logging.Logger import Logger 2 from iupdatable.logging.LogLevel import LogLevel 3 4 5 def logging_debug_info(): 6 Logger.get_instance().debug('message', is_with_debug_info=True) 7 Logger.get_instance().info('message', is_with_debug_info=True) 8 Logger.get_instance().warning('message', is_with_debug_info=True) 9 Logger.get_instance().error('message', is_with_debug_info=True) 10 Logger.get_instance().fatal('message', is_with_debug_info=True) 11 Logger.get_instance().critical('message', is_with_debug_info=True) 12 13 14 logging_debug_info()
輸出內容就會變成:
主要用途是在try except中使用,方便在日誌中定位出錯信息:
try: print('to do') except Exception as e: Logger.error(repr(e), is_with_debug_info=True)