14. python 日志模塊logging & logging.handler

1. 通過logging.basicConfig函數(shù)對日志的輸出格式及方式做相關(guān)配置

logging.basicConfig(level=logging.INFO,\

format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',\

datefmt='%a, %d %b %Y %H:%M:%S',\

filename=logfile,

filemode='a')


logging.basicConfig函數(shù)各參數(shù):

filename: 指定日志文件名

filemode: 和file函數(shù)意義相同,指定日志文件的打開模式,'w'或'a'

format: 指定輸出的格式和內(nèi)容,format可以輸出很多有用信息,如上例所示:

%(levelno)s: 打印日志級別的數(shù)值

%(levelname)s: 打印日志級別名稱

%(pathname)s: 打印當(dāng)前執(zhí)行程序的路徑,其實(shí)就是sys.argv[0]

%(filename)s: 打印當(dāng)前執(zhí)行程序名

%(funcName)s: 打印日志的當(dāng)前函數(shù)

%(lineno)d: 打印日志的當(dāng)前行號

%(asctime)s: 打印日志的時間

%(thread)d: 打印線程ID

%(threadName)s: 打印線程名稱

%(process)d: 打印進(jìn)程ID

%(message)s: 打印日志信息

datefmt: 指定時間格式,同time.strftime()

level: 設(shè)置日志級別,默認(rèn)為logging.WARNING

stream: 指定將日志的輸出流,可以指定輸出到sys.stderr,sys.stdout或者文件,默認(rèn)輸出到sys.stderr,當(dāng)stream和filename同時指定時,stream被忽略


2. logger.handlers

StreamHandler: 將日志信息輸出到sys.stdout, sys.stderr

FileHandler: 將日志信息輸出到磁盤文件

NullHandler:?

WatchedFileHandler: 監(jiān)視文件狀態(tài),如果文件被改變了,就關(guān)閉當(dāng)前流,重新打開文件

RotatingFileHandler: 支持循環(huán)日志文件,比如文件大小達(dá)到設(shè)定值時,會創(chuàng)建一個日志文件

TimeRotatingFileHandler: 定時循環(huán)日志


3. 定義一個初始化log的函數(shù)

import os

import logging

import logging.handlers

def init_log(log_path, level=logging.INFO, when="D", backup=7, format="%(levelname)s: %(asctime)s: %(filename)s:%(lineno)d * %(thread)d %(message)s", datefmt="%m-%d %H:%M:%S"):

? ? ? formatter = logging.Formatter(format, datefmt)

? ? ? logger = logging.getLogger()

? ? ? logger.setLevel(level)

? ? ? dir = os.path.dirname(log_path)

? ? ? if not os.path.isdir(dir):

? ? ? ? ? os.makedirs(dir)

? ? ?handler = logging.handlers.TimedRotatingFileHandler(log_path + ".log", when=when, ?backupCount=backup)

? ? ?handler.setLevel(level)

? ? ?handler.setFormatter(formatter)

? ? ?logger.addHandler(handler)

if __name__ == '__main__':

? ? ?init_log('mylog')

? ? ?logging.info('start')

? ? ?logging.error('has error')


參考:

1.?http://www.cnblogs.com/dkblog/archive/2011/08/26/2155018.html

2. http://blog.csdn.net/yypsober/article/details/51800120

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容