Python標準庫之logging模組

2022-08-31 21:12:12 字數 3106 閱讀 9613

很多程式都有記錄日誌的需求,並且日誌中包含的資訊即有正常的程式訪問日誌,還可能有錯誤、警告等資訊輸出,python的logging模組提供了標準的日誌介面,你可以通過它儲存各種格式的日誌,logging的日誌可以分為 debug()、info()、warning()、 error() 、critical() 5個級別。

其中下面這句中的level=loggin.debug意思是,把日誌紀錄級別設定為debug,也就是說,只有比日誌是debug或比debug級別更高的日誌才會被記錄到檔案裡

import logging

logging.basicconfig(filename="tesxt.log",level=logging.debug)

logging.debug("debug message")

logging.info("input user/passwd")

logging.error("error")

logging.warning("user already inputed three time username/password!")

logging.critical("the username was locking!")

輸出結果:

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

使用者輸出的訊息

import logging

#create logger

logger = logging.getlogger('test-log')

logger.setlevel(logging.debug)

# create console handler and set level to debug

ch = logging.streamhandler()

ch.setlevel(logging.debug)

# create file handler and set level to warning

fh = logging.filehandler("access.log")

fh.setlevel(logging.warning)

# create formatter

formatter = logging.formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

# add formatter to ch and fh

ch.setformatter(formatter)

fh.setformatter(formatter)

# add ch and fh to logger

logger.addhandler(ch)

logger.addhandler(fh)

logger.debug('debug message')

logger.info('info message')

logger.warn('warn message')

logger.error('error message')

logger.critical('critical message')

Python標準庫之time, datetime包

python具有良好的時間和日期管理功能。實際上,計算機只會維護乙個掛鐘時間 wall clock time 這個時間是從某個固定時間起點到現在的時間間隔。時間起點的選擇與計算機相關,但一台計算機的話,這一時間起點是固定的。其它的日期資訊都是從這一時間計算得到的。此外,計算機還可以測量cpu實際上執...

Python標準庫之asyncio

asyncio是python 3.4版本引入的標準庫,直接內建了對非同步io的支援。asyncio的程式設計模型就是乙個訊息迴圈。我們從asyncio模組中直接獲取乙個eventloop的引用,然後把需要執行的協程扔到eventloop中執行,就實現了非同步io。用asyncio實現hello wo...

Python 標準庫之 shutil

shutil是shell utilities的簡寫,它提供了大量的檔案和目錄的高階操作。特別針對檔案 目錄的拷貝和刪除,主要功能為目錄和檔案操作以及壓縮操作。函式說明 shutil.copyfile src,dst 從源src複製到dst中去。如果當前的dst已存在的話就會被覆蓋掉,src 和 ds...