2018/03/14

python 如何印出 logging debug message 或輸出至log檔案

基本上都要 import logging模組, 這是python built-in的module, 然後有各種設定如下:

第一種: 最簡潔的語法

使用 logging.basicConfig() 將多種參數設定一次完成! logging.basicConfig 必須在輸出訊息之前呼叫,而且只能呼叫一次。

將xxxxx輸出到 stdout標準輸出:

import loggingimport syslogging.basicConfig(stream=sys.stdout,level=logging.DEBUG,format='%(asctime)s %(name)s - %(levelname)-s: %(message)s')logging.debug('xxxxxxx')  #可以透過 logging印出

將xxxxx輸出到 log file:

import loggingimport syslogging.basicConfig(filename='myLog.txt',level=logging.DEBUG,format='%(asctime)s %(name)s - %(levelname)-s: %(message)s')logging.debug('xxxxxxx')  #可以透過 logging印出

第二種: 進階一點的設定語法

將xxxxx輸出到 stdout標準輸出:

import loggingimport sysroot = logging.getLogger()     #透過 logging.getLogger() 來得到 root (Logger Object)root.setLevel(logging.DEBUG)   #設定層級的訊息ch = logging.StreamHandler(sys.stdout) # 定義ch為handler且為 stdout標準輸出ch.setLevel(logging.DEBUG)   #設定ch的層級的訊息# 設定ch的輸出格式formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') ch.setFormatter(formatter)# 將ch hander 加入到 root loggerroot.addHandler(ch)  logging.debug('debug message! xxxxxxx')  #可以透過 logging印出root.debug('root message! xxxxxxx')      #可以透過 root印出 (Logger Object)

沒有留言:

張貼留言