1. 程式人生 > >Python基礎-模組補充

Python基礎-模組補充

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')