Logging模組的簡單使用 Python

來源:互聯網
上載者:User
看過還不錯,準系統都講到了。

下面把它的使用代碼寫出來,很簡單:

1       def initlog():
2           import logging
3           
4           logger = logging.getLogger()
5           hdlr = logging.FileHandler(logfile)
6           formatter = logging.Formatter(‘%(asctime)s %(levelname)s %(message)s’)
7           hdlr.setFormatter(formatter)
8           logger.addHandler(hdlr)
9           logger.setLevel(logging.NOTSET)
10          
11          return logger

這個函數用來返回一個日誌對象。

第4行產生一個日誌對象,可以帶一個名字,可以預設。(註:這裡的名字是日誌類的名字,用於標識這個logger類)
第5行產生一個Handler。logging支援許多Handler,象FileHandler, SocketHandler, SMTPHandler等,我由於要寫檔案就使用了FileHandler。logfile是一個全域變數,它就是一個檔案名稱,如:’crawl.log’。
第6行產生一個格式器,用於規範日誌的輸出格式。如果沒有這行代碼,那麼預設的格式就是:”%(message)s”。也就是寫日誌時,資訊是什麼日誌中就是什麼,沒有日期,沒有資訊層級等資訊。logging支援許多種替換值,詳細請看Formatter的文檔說明。這裡有三項:時間,資訊層級,日誌資訊。(比較常用就著三項)
第7行將格式器設定到處理器上。
第8行將處理器加到日誌對象上。
第9行設定日誌資訊輸出的層級。logging提供多種層級的日誌資訊,如:NOTSET, DEBUG, INFO, WARNING, ERROR, CRITICAL等。每個層級都對應一個數值。如果不執行此句,預設為30(WARNING)。可以執行:logging.getLevelName(logger.getEffectiveLevel())來查看預設的記錄層級。日誌對象對於不同的層級資訊提供不同的函數進行輸出,如:info(), error(), debug()等。當寫入日誌時,小於指定層級的資訊將被忽略。因此為了輸出想要的記錄層級一定要設定好此參數。這裡我設為NOTSET(值為0),也就是想輸出所有資訊。

有了日誌對象,輸出就非常簡單了:

有以下幾種的level

  

logger.error(message)
logger.info(message)

logger.warning(msg)

logger.critical(msg)

logger.exception(msg)

logger.log(msg)

def initlog():    import logging    logger = logging.getLogger('LoggerE18')    hdlr = logging.FileHandler("D:\Euler\E18\Log.txt", "w") # Write mode    formatter = logging.Formatter('%(asctime)s, %(levelname)s, %(message)s')    hdlr.setFormatter(formatter)    logger.addHandler(hdlr)    logger.setLevel(logging.DEBUG)    return loggerimport iologger = initlog()logger.info("logger name is '" + logger.name + "'")f = open("D:\Euler\E18\Data.txt", "r")logger.info("Open file")data = f.readlines()logger.info("Get data")f.close()logger.debug(data)for i in range(0, len(data)-1):    data[i] = data[i].strip()logger.debug(data)

  這裡的日誌採用W模式,唯寫模式,這樣就不用追加導致日誌增大的麻煩。 setLevel一定要注意不要用NOTSET,那種的是寫不進去的,會什麼日誌都寫不了。就用DEBUG 就好。

logger類的關閉要採用logging.shutdown()方法來關閉。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.