1. 等級
日志等級(level) | 描述 |
---|---|
DEBUG | 最詳細(xì)的日志信息槽地,典型應(yīng)用場景是 問題診斷 |
INFO | 信息詳細(xì)程度僅次于DEBUG岳遥,通常只記錄關(guān)鍵節(jié)點信息走净,用于確認(rèn)一切都是按照我們預(yù)期的那樣進(jìn)行工作 |
WARNING | 當(dāng)某些不期望的事情發(fā)生時記錄的信息(如,磁盤可用空間較低)舟肉,但是此時應(yīng)用程序還是正常運(yùn)行的 |
ERROR | 由于一個更嚴(yán)重的問題導(dǎo)致某些功能不能正常運(yùn)行時記錄的信息 |
CRITICAL | 當(dāng)發(fā)生嚴(yán)重錯誤厉碟,導(dǎo)致應(yīng)用程序不能繼續(xù)運(yùn)行時記錄的信息 |
- 日志等級是從上到下依次升高的,即:
DEBUG < INFO < WARNING < ERROR < CRITICAL
卖词,而日志的信息量是依次減少的 - 當(dāng)指定日志級別后巩那,應(yīng)用程序會記錄所有日志級別大于或等于指定日志級別的日志信息
2. 記錄格式
- 事件發(fā)生時間
- 事件發(fā)生位置
- 事件的嚴(yán)重程度--日志級別
- 事件內(nèi)容
3. logging模塊
常用logging模塊用以記錄日志
函數(shù) | 說明 |
---|---|
logging.debug(msg, *args, **kwargs) | 創(chuàng)建一條嚴(yán)重級別為DEBUG的日志記錄 |
logging.info(msg, *args, **kwargs) | 創(chuàng)建一條嚴(yán)重級別為INFO的日志記錄 |
logging.warning(msg, *args, **kwargs) | 創(chuàng)建一條嚴(yán)重級別為WARNING的日志記錄 |
logging.error(msg, *args, **kwargs) | 創(chuàng)建一條嚴(yán)重級別為ERROR的日志記錄 |
logging.critical(msg, *args, **kwargs) | 創(chuàng)建一條嚴(yán)重級別為CRITICAL的日志記錄 |
logging.log(level, *args, **kwargs) | 創(chuàng)建一條嚴(yán)重級別為level的日志記錄 |
logging.basicConfig(**kwargs) | 對root logger進(jìn)行一次性配置 |
I. logging.basicConfig()
函數(shù)說明
該方法用于為
logging
日志系統(tǒng)做一些基本配置
logging.basicConfig(**kwargs)
-
logging.basicConfig()
函數(shù)是一個一次性的簡單配置工具使,也就是說只有在第一次調(diào)用該函數(shù)時會起作用此蜈,后續(xù)再次調(diào)用該函數(shù)時完全不會產(chǎn)生任何操作的即横。
參數(shù)名稱 | 描述 |
---|---|
filename | 指定日志輸出目標(biāo)文件的文件名,指定該設(shè)置項后日志信心就不會被輸出到控制臺了 |
filemode | 指定日志文件的打開模式裆赵,默認(rèn)為'a'东囚。需要注意的是,該選項要在filename指定時才有效 |
format | 指定日志格式字符串战授,即指定日志輸出時所包含的字段信息以及它們的順序页藻。logging模塊定義的格式字段下面會列出。 |
datefmt | 指定日期/時間格式植兰。需要注意的是份帐,該選項要在format中包含時間字段%(asctime)s時才有效 |
level | 指定日志器的日志級別 |
stream | 指定日志輸出目標(biāo)stream,如sys.stdout楣导、sys.stderr以及網(wǎng)絡(luò)stream废境。需要說明的是,stream和filename不能同時提供筒繁,否則會引發(fā) ValueError異常 |
style | Python 3.2中新添加的配置項噩凹。指定format格式字符串的風(fēng)格,可取值為'%'毡咏、'{'和'$'驮宴,默認(rèn)為'%' |
handlers | Python 3.3中新添加的配置項。該選項如果被指定呕缭,它應(yīng)該是一個創(chuàng)建了多個Handler的可迭代對象堵泽,這些handler將會被添加到root logger修己。需要說明的是:filename、stream和handlers這三個配置項只能有一個存在迎罗,不能同時出現(xiàn)2個或3個箩退,否則會引發(fā)ValueError異常。 |
II. logging
模塊定義的格式字符串字段
字段/屬性名稱 | 使用格式 | 描述 |
---|---|---|
asctime | %(asctime)s | 日志事件發(fā)生的時間--人類可讀時間佳谦,如:2003-07-08 16:49:45,896 |
created | %(created)f | 日志事件發(fā)生的時間--時間戳,就是當(dāng)時調(diào)用time.time()函數(shù)返回的值 |
relativeCreated | %(relativeCreated)d | 日志事件發(fā)生的時間相對于logging模塊加載時間的相對毫秒數(shù)(目前還不知道干嘛用的) |
msecs | %(msecs)d | 日志事件發(fā)生事件的毫秒部分 |
levelname | %(levelname)s | 該日志記錄的文字形式的日志級別('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL') |
levelno | %(levelno)s | 該日志記錄的數(shù)字形式的日志級別(10, 20, 30, 40, 50) |
name | %(name)s | 所使用的日志器名稱滋戳,默認(rèn)是'root'钻蔑,因為默認(rèn)使用的是 rootLogger |
message | %(message)s | 日志記錄的文本內(nèi)容,通過 msg % args計算得到的 |
pathname | %(pathname)s | 調(diào)用日志記錄函數(shù)的源碼文件的全路徑 |
filename | %(filename)s | pathname的文件名部分奸鸯,包含文件后綴 |
module | %(module)s | filename的名稱部分咪笑,不包含后綴 |
lineno | %(lineno)d | 調(diào)用日志記錄函數(shù)的源代碼所在的行號 |
funcName | %(funcName)s | 調(diào)用日志記錄函數(shù)的函數(shù)名 |
process | %(process)d | 進(jìn)程ID |
processName | %(processName)s | 進(jìn)程名稱,Python 3.1新增 |
thread | %(thread)d | 線程ID |
threadName | %(thread)s | 線程名稱 |
4. 使用示例
def __init__(self, filename):
self.filename = filename
self.log_filename = 'logs/' + self.filename
logging.basicConfig(filename=self.log_filename + '.txt', filemode='a+',
level=logging.DEBUG, format="%(asctime)s - %(levelname)s - %(message)s "
, datefmt="%m/%d/%Y %H:%M:%S %p")
logging.info("FILENAME:%s " % self.filename)
logging.info("*********************************************")