學(xué)一門新技術(shù)或者新語言,我們都要首先學(xué)會如何去適應(yīng)這們新技術(shù),其中在適應(yīng)過程中,我們必須得學(xué)習(xí)如何調(diào)試程序并打出相應(yīng)的log信息來,正所謂“只要log打的好,沒有bug解不了”,在我們熟知的一些信息技術(shù)中,log4xxx系列以及開發(fā)Android app時的android.util.Log包等等都是為了開發(fā)者更好的得到log信息服務(wù)的。在Python這門語言中,我們同樣可以根據(jù)自己的程序需要打出log。
log信息不同于使用打樁法打印一定的標(biāo)記信息,log可以根據(jù)程序需要而分出不同的log級別,比如info、debug、warn等等級別的信息,只要實時控制log級別開關(guān)就可以為開發(fā)人員提供更好的log信息,與log4xx類似,logger,handler和日志消息的調(diào)用可以有具體的日志級別(Level),只有在日志消息的級別大于logger和handler的設(shè)定的級別,才會顯示。下面我就來談?wù)勎以赑ython中使用的logging模塊一些方法。
logging模塊介紹
Python的logging模塊提供了通用的日志系統(tǒng),熟練使用logging模塊可以方便開發(fā)者開發(fā)第三方模塊或者是自己的Python應(yīng)用。同樣這個模塊提供不同的日志級別,并可以采用不同的方式記錄日志,比如文件,HTTP、GET/POST,SMTP,Socket等,甚至可以自己實現(xiàn)具體的日志記錄方式。下文我將主要介紹如何使用文件方式記錄log。
logging模塊包括logger,handler,filter,formatter這四個基本概念。
logger:提供日志接口,供應(yīng)用代碼使用。logger最長用的操作有兩類:配置和發(fā)送日志消息。可以通過logging.getLogger(name)獲取logger對象,如果不指定name則返回root對象,多次使用相同的name調(diào)用getLogger方法返回同一個logger對象。
handler:將日志記錄(log record)發(fā)送到合適的目的地(destination),比如文件,socket等。一個logger對象可以通過addHandler方法添加0到多個handler,每個handler又可以定義不同日志級別,以實現(xiàn)日志分級過濾顯示。
filter:提供一種優(yōu)雅的方式?jīng)Q定一個日志記錄是否發(fā)送到handler。
formatter:指定日志記錄輸出的具體格式。formatter的構(gòu)造方法需要兩個參數(shù):消息的格式字符串和日期字符串,這兩個參數(shù)都是可選的。
基本使用方法
一些小型的程序我們不需要構(gòu)造太復(fù)雜的log系統(tǒng),可以直接使用logging模塊的basicConfig函數(shù)即可,代碼如下:
代碼如下:
'''
Created on 2012-8-12
@author: walfred
@module: loggingmodule.BasicLogger
'''
import logging
log_file = "./basic_logger.log"
logging.basicConfig(filename = log_file, level = logging.DEBUG)
logging.debug("this is a debugmsg!")
logging.info("this is a infomsg!")
logging.warn("this is a warn msg!")
logging.error("this is a error msg!")
新聞熱點
疑難解答
圖片精選