標籤:
import logging
logger = logging.getLogger() #產生一個日誌對象,()內為日誌對象的名字,可以不帶,名字不給定就是root
handler=logging.FileHandler("Log_test.txt") #產生一個handler(處理器),
#formatter 下面代碼指定日誌的輸出格式
fmt = ‘%(asctime)s - %(filename)s:%(lineno)s - %(name)s - %(message)s‘
formatter = logging.Formatter(fmt) # 執行個體化formatter
handler.setFormatter(formatter) # 為handler添加formatter
logger.addHandler(handler)
logger.setLevel(logging.NOTSET) #設定日誌輸出資訊的層級
logger.error("This is an error message") #輸出設定小於層級的將不會輸出,所以此處的設定應該比setLevel高
logger.info("This is an info message")
logger.critical("This is a critical message")
python可以產生很多handler,負責把logger建立的日誌資訊發送到指定的目的地,不同的Handler種類發送到不同的目的地。FileHandler將日誌資訊寫入到檔案中;StreamHandler將日誌資訊輸出到控制台;SMTPHandler將日誌資訊以郵件的形式發送出去;SocketHandler將日誌資訊用TCP Socket發送出去;DatagramHandler將日誌資訊用UDP資料報發送出去
formatter的格式
屬性名稱 |
格式 |
說明 |
name |
%(name)s |
日誌的名稱 |
asctime |
%(asctime)s |
可讀時間,預設格式‘2003-07-08 16:49:45,896’,逗號之後是毫秒 |
filename |
%(filename)s |
檔案名稱,pathname的一部分 |
pathname |
%(pathname)s |
檔案的全路徑名稱 |
funcName |
%(funcName)s |
調用日誌多對應的方法名 |
levelname |
%(levelname)s |
日誌的等級 |
levelno |
%(levelno)s |
數字化的日誌等級 |
lineno |
%(lineno)d |
被記錄日誌在源碼中的行數 |
module |
%(module)s |
模組名 |
msecs |
%(msecs)d |
時間中的毫秒部分 |
process |
%(process)d |
進程的ID |
processName |
%(processName)s |
進程的名稱 |
thread |
%(thread)d |
線程的ID |
threadName |
%(threadName)s |
線程的名稱 |
relativeCreated |
%(relativeCreated)d |
日誌被建立的相對時間,以毫秒為單位 |
記錄層級大小關係為:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET,當然也可以自己定義記錄層級
python日誌輸出