#coding: GB2312 def initlog(): import logging # 生成一個日誌對象 logger = logging.getLogger() # 生成一個Handler。logging支持許多Handler # 象FileHandler, SocketHandler, SMTPHandler等,我因爲要寫 # 文件就使用了FileHandler。 # logfile是一個全局變量,它就是一個文件名,如:'crawl.log' logfile = 'test.log' hdlr = logging.FileHandler( logfile ) # 成一個格式器,用於規範日誌的輸出格式。若是沒有這行代碼,那麼缺省的 # 格式就是:"%(message)s"。也就是寫日誌時,信息是什麼日誌中就是什麼 # 沒有日期,沒有信息級別等信息。logging支持許多種替換值,詳細請看 # Formatter的文檔說明。這裏有三項:時間,信息級別,日誌信息1 formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s') # 將格式器設置處處理器上 hdlr.setFormatter(formatter) # 將處理器加到日誌對象上 logger.addHandler(hdlr) # 設置日誌信息輸出的級別。logging提供多種級別的日誌信息,如:NOTSET, # DEBUG, INFO, WARNING, ERROR, CRITICAL等。每一個級別都對應一個數值。 # 若是不執行此句,缺省爲30(WARNING)。能夠執行:logging.getLevelName # (logger.getEffectiveLevel())來查看缺省的日誌級別。日誌對象對於不一樣 # 的級別信息提供不一樣的函數進行輸出,如:info(), error(), debug()等。當 # 寫入日誌時,小於指定級別的信息將被忽略。所以爲了輸出想要的日誌級別必定 # 要設置好此參數。這裏我設爲NOTSET(值爲0),也就是想輸出全部信息 logger.setLevel(logging.NOTSET) return logger logging=initlog() logging.info('註冊')
經過以上例子我的總結:html
初始化一個寫文件的log對象的步驟:python
1.先生成一個logger 對象:函數
logger = logging.getLogger()debug
2.生成一個處理器Hander:日誌
hdlr = logging.FileHandler( file )code
file: 能夠是帶路徑的全文件路徑,如:「D://logs//test.log」orm
3.生存格式器制定輸出日誌格式:htm
formatrer = logging.Formatter('%(asctime)s %(levelname)s %(message)s')對象
格式字符:blog
hdlr.setFormatter(formatter)
5.將處理器Hander添加到log對象上
logger.addHandler(hdlr)
6.根據實際狀況設置日誌級別
logger.setLevel(logging.NOTSET)
若想支持的級別多點,最好設置的級別低點。
具體方法及使用講解,參見: