天天看點

Logging的簡單使用

日志級别    使用場景

DEBUG    debug級别用來記錄詳細的資訊,友善定位問題進行調試,在生産環境我們一般不開啟DEBUG

INFO    用來記錄關鍵代碼點的資訊,以便代碼是否按照我們預期的執行,生産環境通常會設定INFO級别

WARNING    記錄某些不預期發生的情況,如磁盤不足

ERROR    由于一個更嚴重的問題導緻某些功能不能正常運作時記錄的資訊

CRITICAL    當發生嚴重錯誤,導緻應用程式不能繼續運作時記錄的資訊

logging預設隻會輸出error之後的資訊,并且隻是輸出在标準輸出流中,我真可以在BasicConfig中設定 “level” ,來講所有的等級的資訊都進行輸出,

import logging
logging.basicConfig( level=logging.DEBUG)
logging.debug("this is debug")
logging.info("this is info")
logging.error("this is error")
           

日志記錄到檔案

前面的日志預設會把日志輸出到标準輸出流,就是隻在指令行視窗輸出,程式重新開機後曆史日志沒地方找,是以把日志内容永久記錄是一個很常見的需求。同樣通過配置函數logging.basicConfig可以指定日志輸出到什麼地方

import logging
logging.basicConfig(filename="test.log", level=logging.INFO)
logging.debug("this is debug")
logging.info("this is info")
logging.error("this is error")
           

指定日志格式

預設輸出的格式包含3部分,日志級别,日志記錄器的名字,以及日志内容,中間用“:”連接配接。 如果我們想改變日志格式,例如想加入日期時間、顯示日志器名字,我們是可以指定format參數來設定日志的格式

import logging
logging.basicConfig(format='%(asctime)s %(levelname)s %(name)s %(message)s')
logging.error("this is error")
           
Logging的簡單使用

Logging.basicConfig的作用

1、建立一個root記錄器

2、設定root的日志級别為warning

3、為root記錄器添加StreamHandler處理器

4、為處理器設定一個簡單格式器

logging.basicConfig()
logging.warning("hello")
           

這兩行代碼其實就等價于:

import sys
import logging
from logging import StreamHandler
from logging import Formatter


logger = logging.getLogger("root")
logger.setLevel(logging.WARNING)
handler = StreamHandler(sys.stderr)
logger.addHandler(handler)
formatter = Formatter(" %(levelname)s:%(name)s:%(message)s")
handler.setFormatter(formatter)
logger.warning("hello")
           

logging.basicConfig 方法做的事情是相當于給日志系統做一個最基本的配置,友善開發者快速接入使用。它必須在開始記錄日志前調用。不過如果 root 記錄器已經指定有其它處理器,這時候你再調用basciConfig,則該方式将失效,它什麼都不做。

繼續閱讀