python日誌輸出

2021-06-29 04:50:19 字數 2417 閱讀 6651

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,當然也可以自己定義日誌級別

logging.getlogger([name])

建立logger物件。日誌記錄的工作主要由logger物件來完成。在呼叫getlogger時要提供logger的名稱(注:多次使用相同名稱 來呼叫getlogger,返回的是同乙個物件的引用。),logger例項之間有層次關係,這些關係通過logger名稱來體現,如:

p = logging.getlogger("root")

c1 = logging.getlogger("root.c1")

c2 = logging.getlogger("root.c2")

例子中,p是父logger, c1,c2分別是p的子logger。c1, c2將繼承p的設定。如果省略了name引數, getlogger將返回日誌物件層次關係中的根logger。

Python 日誌輸出

列印日誌是很多程式的重要需求,良好的日誌輸出可以幫我們更方便的檢測程式執行狀態。python標準庫提供了logging模組,讓我們也可以方便的在python中列印日誌。完整的使用方法可以參考標準庫文件。這裡做一下簡單介紹。日誌級別有如下幾種。當獲取根logger的時候,預設級別為notset,這樣會...

Python 日誌輸出

指令碼案例 import logging logging logging.getlogger logger.setlevel logging.info consolehandler logging.streamhandler logger.addhandler consolehandler logg...

python 輸出日誌

專案路徑 prj path os.path.dirname os.path.abspath file 當前檔案的上一級的上一級目錄 增加一級 在專案路徑下建立乙個log資料夾,拼接成路徑格式 log path os.path.join prj path,log 在log資料夾下再建立乙個以當前日期命...