• <del id="a8uas"></del>
    • 千鋒教育-做有情懷、有良心、有品質的職業教育機構

      400-811-9990
      手機站
      千鋒教育

      千鋒學習站 | 隨時隨地免費學

      千鋒教育

      掃一掃進入千鋒手機站

      領取全套視頻
      千鋒教育

      關注千鋒學習站小程序
      隨時隨地免費學習課程

      上海
      • 北京
      • 鄭州
      • 武漢
      • 成都
      • 西安
      • 沈陽
      • 廣州
      • 南京
      • 深圳
      • 大連
      • 青島
      • 杭州
      • 重慶
      當前位置:合肥千鋒IT培訓  >  技術干貨  >  Python之logging模塊重定向

      Python之logging模塊重定向

      來源:千鋒教育
      發布人:xqq
      時間: 2023-11-06 01:04:25

      對于代碼量較大的工程,建議使用logging模塊進行輸出。該模塊是線程安全的,可將日志信息輸出到控制臺、寫入文件、使用TCP/UDP協議發送到網絡等等。

      默認情況下logging模塊將日志輸出到控制臺(標準出錯),且只顯示大于或等于設置的日志級別的日志。日志級別由高到低為CRITICAL>ERROR>WARNING>INFO>DEBUG>NOTSET,默認級別為WARNING。

      以下示例將日志信息分別輸出到控制臺和寫入文件:

      importlogging

      logging.basicConfig(level=logging.DEBUG,

      format='%(asctime)s[%(levelname)s]at%(filename)s,%(lineno)d:%(message)s',

      datefmt='%Y-%m-%d(%a)%H:%M:%S',

      filename='out.txt',

      filemode='w')

      #將大于或等于INFO級別的日志信息輸出到StreamHandler(默認為標準錯誤)

      console=logging.StreamHandler()

      console.setLevel(logging.INFO)

      formatter=logging.Formatter('[%(levelname)-8s]%(message)s')#屏顯實時查看,無需時間

      console.setFormatter(formatter)

      logging.getLogger().addHandler(console)

      logging.debug('gubed');logging.info('ofni');logging.critical('lacitirc')

      通過對多個handler設置不同的level參數,可將不同的日志內容輸入到不同的地方。本例使用在logging模塊內置的StreamHandler(和FileHandler),運行后屏幕上顯示:

      [INFO]ofni

      [CRITICAL]lacitirc

      out.txt文件內容則為:

      2022-04-22(Fri)17:10:53[DEBUG]attest.py,25:gubed

      2022-04-22(Fri)17:10:53[INFO]attest.py,25:ofni

      2022-04-22(Fri)17:10:53[CRITICAL]attest.py,25:lacitirc

      除直接在程序中設置Logger、Handler、Formatter等外,還可將這些信息寫入配置文件。示例如下:

      #logger.conf

      ###############Logger###############

      [loggers]

      keys=root,Logger2F,Logger2CF

      [logger_root]

      level=DEBUG

      handlers=hWholeConsole

      [logger_Logger2F]

      handlers=hWholeFile

      qualname=Logger2F

      propagate=0

      [logger_Logger2CF]

      handlers=hPartialConsole,hPartialFile

      qualname=Logger2CF

      propagate=0

      ###############Handler###############

      [handlers]

      keys=hWholeConsole,hPartialConsole,hWholeFile,hPartialFile

      [handler_hWholeConsole]

      class=StreamHandler

      level=DEBUG

      formatter=simpFormatter

      args=(sys.stdout,)

      [handler_hPartialConsole]

      class=StreamHandler

      level=INFO

      formatter=simpFormatter

      args=(sys.stderr,)

      [handler_hWholeFile]

      class=FileHandler

      level=DEBUG

      formatter=timeFormatter

      args=('out.txt','a')

      [handler_hPartialFile]

      class=FileHandler

      level=WARNING

      formatter=timeFormatter

      args=('out.txt','w')

      ###############Formatter###############

      [formatters]

      keys=simpFormatter,timeFormatter

      [formatter_simpFormatter]

      format=[%(levelname)s]at%(filename)s,%(lineno)d:%(message)s

      [formatter_timeFormatter]

      format=%(asctime)s[%(levelname)s]at%(filename)s,%(lineno)d:%(message)s

      datefmt=%Y-%m-%d(%a)%H:%M:%S

      此處共創建三個Logger:root,將所有日志輸出至控制臺;Logger2F,將所有日志寫入文件;Logger2CF,將級別大于或等于INFO的日志輸出至控制臺,將級別大于或等于WARNING的日志寫入文件。

      程序以如下方式解析配置文件和重定向輸出:

      importlogging,logging.config

      logging.config.fileConfig("logger.conf")

      logger=logging.getLogger("Logger2CF")

      logger.debug('gubed');logger.info('ofni');logger.warn('nraw')

      logger.error('rorre');logger.critical('lacitirc')

      logger1=logging.getLogger("Logger2F")

      logger1.debug('GUBED');logger1.critical('LACITIRC')

      logger2=logging.getLogger()

      logger2.debug('gUbEd');logger2.critical('lAcItIrC')

      運行后屏幕上顯示:

      [INFO]attest.py,7:ofni

      [WARNING]attest.py,7:nraw

      [ERROR]attest.py,8:rorre

      [CRITICAL]attest.py,8:lacitirc

      [DEBUG]attest.py,14:gUbEd

      [CRITICAL]attest.py,14:lAcItIrC

      out.txt文件內容則為:

      2022-04-22(Fri)20:31:21[WARNING]attest.py,7:nraw

      2022-04-22(Fri)20:31:21[ERROR]attest.py,8:rorre

      2022-04-22(Fri)20:31:21[CRITICAL]attest.py,8:lacitirc

      2022-04-22(Fri)20:31:21[DEBUG]attest.py,11:GUBED

      2022-04-22(Fri)20:31:21[CRITICAL]attest.py,11:LACITIRC

      以上內容為大家介紹了Python之logging模塊重定向,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。

      聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。

      猜你喜歡LIKE

      pythonint函數怎么用

      2023-11-06

      python怎么導包

      2023-11-06

      python文件怎么保存

      2023-11-06

      最新文章NEW

      pythonsort()報錯是什么原因

      2023-11-06

      python基礎知識

      2023-11-06

      python怎么打印輸出

      2023-11-06

      相關推薦HOT

      更多>>

      快速通道 更多>>

      最新開班信息 更多>>

      網友熱搜 更多>>