[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)