Python基礎-模組補充
阿新 • • 發佈:2019-02-06
logging模組:
方式一:僅僅只能在控制檯(stream)或是檔案中列印日誌資訊
1.日誌等級(由低到高)
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')
2.日誌基本資訊配置
logging.basicConfig(
level=logging.DEBUG, #預設日誌等級是WARNING,這個可以對日誌預設等級進行修改
#預設把日誌資訊列印到控制檯上(預設引數是stream),這個可以把日誌資訊列印到檔案中。
#即這個方法做不到把之日誌資訊同時列印到控制檯與檔案中,如果同時設定stream與filemane,則只有filename起作用!
filename="logger.log",
filemode="w", #這個可以調整日誌列印資訊的模式,預設是追加,即a!一般情況下也應該是a!
#預設只是列印日誌訊息,下述可以配置列印的資訊格式
# 列印時間 列印檔名 列印行號 列印日誌訊息
#注意:檔名是執行列印日誌訊息的檔案,行號也是列印日誌訊息所在執行檔案中的行號
format="%(asctime)s %(filename)s[%(lineno)d] %(message)s"
)
方式二:可以在控制檯與檔案中同時列印日誌訊息
(一般情況下推薦方式二:因為向控制檯與檔案中列印訊息都是可選的,不是必須同時列印,比較靈活)
import logging
def logger():
#獲取logger物件
logger=logging.getLogger()
#獲取可以向檔案中列印資訊的物件,引數是把日誌資訊列印到此檔案中
fh=logging.FileHandler("test_log")
#獲取可以向控制檯列印資訊的物件
ch=logging.StreamHandler()
#設定列印日誌資訊的格式
fm=logging.Formatter("%(asctime)s %(message)s")
#把列印格式給到檔案操作與控制檯操作的兩個物件
fh.setFormatter(fm)
ch.setFormatter(fm)
#把兩個物件加到logger物件中
logger.addHandler(fh)
logger.addHandler(ch)
#設定列印訊息預設的等級(預設是WARNING)
logger.setLevel("DEBUG")
return logger
logger=logger()
logger.debug("debug")
logger.info("info")
logger.warning("warning")
logger.error("error")
logger.critical("critical")
注意:
1.注意:*getLogger('mylogger'),mylogger是root的兒子,如果方法不加引數,則預設建立root的logger物件!
*上述方法的引數值是唯一的,若有重複的,則後者覆蓋前者!
logger1 = logging.getLogger('mylogger')
logger1.setLevel(logging.DEBUG)
logger2 = logging.getLogger('mylogger')
logger2.setLevel(logging.WARNING)
fh=logging.FileHandler("test_log")
ch=logging.StreamHandler()
logger1.addHandler(fh)
logger1.addHandler(ch)
logger2.addHandler(fh)
logger2.addHandler(ch)
logger1.debug('logger1 debug message')
logger1.info('logger1 info message')
logger1.warning('logger1 warning message')
logger1.error('logger1 error message')
logger1.critical('logger1 critical message')
方式一:僅僅只能在控制檯(stream)或是檔案中列印日誌資訊
1.日誌等級(由低到高)
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')
2.日誌基本資訊配置
logging.basicConfig(
level=logging.DEBUG, #預設日誌等級是WARNING,這個可以對日誌預設等級進行修改
#預設把日誌資訊列印到控制檯上(預設引數是stream),這個可以把日誌資訊列印到檔案中。
#即這個方法做不到把之日誌資訊同時列印到控制檯與檔案中,如果同時設定stream與filemane,則只有filename起作用!
filename="logger.log",
filemode="w", #這個可以調整日誌列印資訊的模式,預設是追加,即a!一般情況下也應該是a!
#預設只是列印日誌訊息,下述可以配置列印的資訊格式
# 列印時間 列印檔名 列印行號 列印日誌訊息
#注意:檔名是執行列印日誌訊息的檔案,行號也是列印日誌訊息所在執行檔案中的行號
format="%(asctime)s %(filename)s[%(lineno)d] %(message)s"
)
方式二:可以在控制檯與檔案中同時列印日誌訊息
(一般情況下推薦方式二:因為向控制檯與檔案中列印訊息都是可選的,不是必須同時列印,比較靈活)
import logging
def logger():
#獲取logger物件
logger=logging.getLogger()
#獲取可以向檔案中列印資訊的物件,引數是把日誌資訊列印到此檔案中
fh=logging.FileHandler("test_log")
#獲取可以向控制檯列印資訊的物件
ch=logging.StreamHandler()
#設定列印日誌資訊的格式
fm=logging.Formatter("%(asctime)s %(message)s")
#把列印格式給到檔案操作與控制檯操作的兩個物件
fh.setFormatter(fm)
ch.setFormatter(fm)
#把兩個物件加到logger物件中
logger.addHandler(fh)
logger.addHandler(ch)
#設定列印訊息預設的等級(預設是WARNING)
logger.setLevel("DEBUG")
return logger
logger=logger()
logger.debug("debug")
logger.info("info")
logger.warning("warning")
logger.error("error")
logger.critical("critical")
注意:
1.注意:*getLogger('mylogger'),mylogger是root的兒子,如果方法不加引數,則預設建立root的logger物件!
*上述方法的引數值是唯一的,若有重複的,則後者覆蓋前者!
logger1 = logging.getLogger('mylogger')
logger1.setLevel(logging.DEBUG)
logger2 = logging.getLogger('mylogger')
logger2.setLevel(logging.WARNING)
fh=logging.FileHandler("test_log")
ch=logging.StreamHandler()
logger1.addHandler(fh)
logger1.addHandler(ch)
logger2.addHandler(fh)
logger2.addHandler(ch)
logger1.debug('logger1 debug message')
logger1.info('logger1 info message')
logger1.warning('logger1 warning message')
logger1.error('logger1 error message')
logger1.critical('logger1 critical message')