loggin 模塊 學(xué)習(xí)
logging用法
- 初始化 logger = logging.getLogger(“name")
- 設(shè)置級(jí)別 logger.setLevel(logging.DEBUG),Logging中有NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL這幾種級(jí)
別再层,日志會(huì)記錄設(shè)置級(jí)別以上的日志
- 定義Handler绍哎,常用的是StreamHandler和FileHandler,
StreamHandler:將日志在控制臺(tái)輸出
FileHandler: 將日志記錄到文件里面 - formatter械念,定義了log信息的 內(nèi)容 和格式蒸健,
例如:'[%(asctime)s] [%(levelname)s] %(message)s', '%Y-%m-%d %H:%M:%S'
Logging 中幾種級(jí)別:NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL
Formatter 中已有格式 :
%(name)s Logger的名字?%(levelname)s 文本形式的日志級(jí)別?
%(message)s 用戶輸出的消息?
%(asctime)s 字符串形式的當(dāng)前時(shí)間座享。默認(rèn)格式是 “2003-07-08 16:49:45,896”。逗號(hào)后面的是毫秒?
%(levelno)s 數(shù)字形式的日志級(jí)別?
%(pathname)s 調(diào)用日志輸出函數(shù)的模塊的完整路徑名似忧,可能沒有?
%(filename)s 調(diào)用日志輸出函數(shù)的模塊的文件名?%(module)s 調(diào)用日志輸出函數(shù)的模塊名?
%(funcName)s 調(diào)用日志輸出函數(shù)的函數(shù)名?
%(lineno)d 調(diào)用日志輸出函數(shù)的語句所在的代碼行?
%(created)f 當(dāng)前時(shí)間渣叛,用UNIX標(biāo)準(zhǔn)的表示時(shí)間的浮 點(diǎn)數(shù)表示?
%(relativeCreated)d 輸出日志信息時(shí)的,自Logger創(chuàng)建以 來的毫秒數(shù)?
%(thread)d 線程ID盯捌〈狙茫可能沒有?
%(threadName)s 線程名〗戎可能沒有?%(process)d 進(jìn)程ID箫攀。可能沒有
____________________示例_________
import logging
1初始化 日志對(duì)象 給日志取個(gè)名字
logger = logging.getLogger()
2設(shè)置級(jí)別
logger.setLevel(logging.DEBUG) #設(shè)置最低級(jí)別(一般都寫DEBUG),小于它的級(jí)別都不紀(jì)錄到文件或輸出到控制臺(tái).
3定義handler
#控制臺(tái)輸出
sh = logging.StreamHandler()
sh.setLevel(logging.ERROR) #error 以上級(jí)別 才會(huì)在控制臺(tái)輸出,低于他的都不在控制臺(tái)輸出
#記錄到文件
fh = logging.FileHandler('test_file.log')
fh.setLevel(logging.DEBUG) #debug級(jí)別以上才會(huì)寫入log文件里面去.
4 定義格式化
formatter = logging.Formatter(
'時(shí)間:%(asctime)s,' #注意 s 后面的逗號(hào) 寫到 引號(hào)里面去
'日志級(jí)別:%(levelname)s,'
'日志消息:%(message)s'
)
5 告訴控制臺(tái)跟文件讓他們以這樣的格式顯示
sh.setFormatter(formatter) #控制臺(tái) 顯示格式
fh.setFormatter(formatter) #文件 顯示格式
6 添加handleer 到我們的對(duì)象里面去(把 日志內(nèi)容 顯示到控制臺(tái)或 記錄到文件)
logger.addHandler(sh)
logger.addHandler(fh)
if name== 'main':
logger.debug('這個(gè)是一個(gè)Debug信息')
logger.info('這個(gè)是一個(gè)info信息')
logger.error('這個(gè)是一個(gè)error信息')
logger.warn('這個(gè)是一個(gè)warn信息')
logger.critical('這個(gè)是一個(gè)critical信息')