日志級別
- DEBUG:程序調試bug時使用
- INFO:程序正常運行時使用
- WARNING:程序未按預期運行時使用,但並不是錯誤,如:用戶登錄密碼錯誤
- ERROR:程序出錯誤時使用,如:IO操作失敗
- CRITICAL:特別嚴重的問題,導致程序不能再繼續運行時使用,如:磁盤空間為空,一般很少使 用
默認的是WARNING等級,當在WARNING或WARNING之上等級的才記錄日志信息。
日志等級從低到高的順序是: DEBUG < INFO < WARNING < ERROR < CRITICAL
1 import logging 2 3 logging.debug("This is a debug level log") 4 logging.info("This is a info level log") 5 logging.warning("This is a warning level log") 6 logging.error("This is a error level log") 7 logging.critical("This is a critical level log")
運行結果
注:日志信息只顯示了大於等於WARNING級別的日志,這說明默認的日志級別設置為WARNING
logging日志等級和輸出格式的設置,且日志信息保存到日志文件
1 import logging 2 3 logging.basicConfig( 4 filename="log.txt", 5 format='%(asctime)s-%(name)s-%(levelname)s-%(module)s:%(message)s', 6 level=10, 7 filemode="w", 8 datefmt='%m/%d/%Y %I:%M:%S' 9 ) 10 logging.debug("This is a debug level log") 11 logging.info("This is a info level log") 12 logging.warning("This is a warning level log") 13 logging.error("This is a error level log") 14 logging.critical("This is a critical level log")
運行結果
logging.basicConfig函數各參數:
- filename:表示文件名
- filemode:和file函數意義相同,指定日志文件的打開模式,'w'或'a'。參數為‘w’表示每次的日志信息都覆蓋掉之前的
- format:表示日志的輸出格式和內容, 參數說明:
- %(asctime)s: 打印日志的時間
- %(levelno)s: 打印日志級別的數值
- %(pathname)s: 打印當前執行程序的路徑
- %(filename)s: 打印當前執行程序名
- %(funcName)s: 打印日志的當前函數
- %(lineno)d: 打印日志的當前行號
- %(thread)d: 打印線程ID
- %(threadName)s: 打印線程名稱
- %(levelname)s: 打印日志級別名稱
- %(message)s: 打印日志信息
- %(process)d: 打印進程ID
- datefmt:表示自定義時間格式
- level:表示設置的日志等級
- FATAL = CRITICAL = 50
-
ERROR = 40
-
WARN = WARNING = 30
-
INFO = 20
-
DEBUG = 10
- NOTSET = 0
- stream: 指定將日志的輸出流,可以指定輸出到sys.stderr,sys.stdout或者文件,默認輸出到sys.stderr,當stream和filename同時指定時,stream被忽略
日志寫入的函數:
1 import logging 2 3 def log(log_content): 4 # 定義文件 5 logFile = logging.FileHandler('logInfo.txt', 'a') 6 # log格式 7 fmt = logging.Formatter(fmt = '%(asctime)s-%(name)s-%(levelname)s-%(module)s:%(message)s') 8 logFile.setFormatter(fmt) 9 10 # 定義日志 11 logger = logging.Logger('logTest', level=logging.DEBUG) 12 logger.addHandler(logFile) 13 logger.info(log_content)