日誌操作
一、logging模組
%(message)s 日誌資訊
%(levelno)s 日誌級別
datefmt 設定時間格式
filename 設定日誌儲存的路徑
level 設定日誌記錄的級別
filemode:檔案開啟方式,在指定了filename時使用這個引數,預設值為“a”還可指定為“w”,“a”表示在原有的日誌之後增添日誌,“w”表示清除原有的日誌後再新增新的日誌。
配置日誌級別、日誌格式、輸出位置
import logging logging.basicConfig(level=logging.DEBUG, format=`%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s`, datefmt=`%a, %d %b %Y %H:%M:%S`, filename=`example.log`, filemode=`w`) logging.debug(`debug message`) logging.info(`info message`) logging.warning(`warning message`) logging.error(`error message`) logging.critical(`critical message`)
在檔案example.log中檢視輸出:
Wed, 24 Oct 2018 19:04:25 test2.py[line:9] DEBUG debug message
Wed, 24 Oct 2018 19:04:25 test2.py[line:10] INFO info message
Wed, 24 Oct 2018 19:04:25 test2.py[line:11] WARNING warning message
Wed, 24 Oct 2018 19:04:25 test2.py[line:12] ERROR error message
Wed, 24 Oct 2018 19:04:25 test2.py[line:13] CRITICAL critical message
%(name)s Logger的名字
%(levelno)s 數字形式的日誌級別
%(levelname)s 文字形式的日誌級別
%(pathname)s 呼叫日誌輸出函式的模組的完整路徑名,可能沒有
%(filename)s 呼叫日誌輸出函式的模組的檔名
%(module)s 呼叫日誌輸出函式的模組名
%(funcName)s 呼叫日誌輸出函式的函式名
%(lineno)d 呼叫日誌輸出函式的語句所在的程式碼行
%(created)f 當前時間,用UNIX標準的表示時間的浮 點數表示
%(relativeCreated)d 輸出日誌資訊時的,自Logger建立以 來的毫秒數
%(asctime)s 字串形式的當前時間。預設格式是 “2003-07-08 16:49:45,896”。逗號後面的是毫秒
%(thread)d 執行緒ID。可能沒有
%(threadName)s 執行緒名。可能沒有
%(process)d 程式ID。可能沒有
%(message)s使用者輸出的訊息
二、logger物件
Logger是一個樹形層級結構,輸出資訊之前都要獲得一個Logger(如果沒有顯示的獲取則自動建立
並使用root Logger,如第一個例子所示)。
logger = logging.getLogger()返回一個預設的Logger也即root Logger,並應用預設的日誌級別、
Handler和Formatter設定。
當然也可以通過Logger.setLevel(lel)指定最低的日誌級別,可用的日誌級別有logging.DEBUG、
logging.INFO、logging.WARNING、logging.ERROR、logging.CRITICAL。
import logging logger = logging.getLogger() logger.setLevel(logging.DEBUG) fh = logging.FileHandler(`example.log`,mode = `w`) ch = logging.StreamHandler() formatter = logging.Formatter(`%(asctime)s - %(name)s - %(levelname)s - %(message)s`) fh.setFormatter(formatter) ch.setFormatter(formatter) logger.addHandler(fh) logger.addHandler(ch) logger.debug(`logger debug message`) logger.info(`logger info message`) logger.warning(`logger warning message`) logger.error(`logger error message`) logger.critical(`logger critical message`)
這裡的檔案模式在FileHandler裡面設定。