日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

日志模块-logging模块

發(fā)布時間:2024/7/19 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 日志模块-logging模块 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

日志模塊 -logging(非常重要)

  • 記錄用戶行為
  • 程序運行過程
  • 程序錯誤記錄
  • logging.debug()通常調(diào)試時用到的日志信息
  • logging.info() #證明事情按照預期的那樣工作
  • longging.warning() #表明發(fā)生了意外,或者不就得將來發(fā)生的問題(如:磁盤滿了)軟件還是正常的工作
  • longging.error() #由于更嚴重的問題導致軟件已經(jīng)不能繼續(xù)執(zhí)行某些功能
  • longging.critical() #嚴重錯誤,表示軟件不能再繼續(xù)運行下去
    • 程序默認級別在info以上

      # 使用#導入logging模塊import logginglogging.debug('低級別的拍錯信息') #低級別的排錯信息logging.info('正常的信息') #正常信息logging.warning('警告信息') #警告信息logging.error('錯誤信息') #錯誤信息logging.critical('高級別的錯誤信息') #高級別錯誤信息#結(jié)果WARNING:root:警告信息ERROR:root:錯誤信息CRITICAL:root:高級別的錯誤信息
  • 簡單配置

    import logging#配置logging logging.basicConfig(filename='logger.log', level=logging.INFO)logging.debug('低級別的拍錯信息') #低級別的排錯信息 logging.info('正常的信息') #正常信息 logging.warning('警告信息') #警告信息 logging.error('錯誤信息') #錯誤信息 logging.critical('高級別的錯誤信息') #高級別錯誤信息#結(jié)果 當前文件路徑下生成了文件logger.log 其內(nèi)容如下: INFO:root:正常的信息 WARNING:root:警告信息 ERROR:root:錯誤信息 CRITICAL:root:高級別的錯誤信息
    • 因為通過level=logging.INFO設(shè)置了日志的通知級別,所以文件中打印出了INFO的信息

    basicConfig()常用配置參數(shù)

    logging.basicConfig()函數(shù)中可通過具體參數(shù)來更改logging模塊默認行為,可用參數(shù)有:filename:用指定的文件名創(chuàng)建FiledHandler,這樣日志會被存儲在指定的文件中。filemode:文件打開方式,在指定了filename時使用這個參數(shù),默認值為“a”還可指定為“w”。format:指定handler使用的日志顯示格式。datefmt:指定日期時間格式。level:設(shè)置rootlogger(后邊會講解具體概念)的日志級別stream:用指定的stream創(chuàng)建StreamHandler。可以指定輸出到sys.stderr,sys.stdout或者文件(f=open(‘test.log’,’w’)),默認為sys.stderr。若同時列出了filename和stream兩個參數(shù),則stream參數(shù)會被忽略。format參數(shù)中可能用到的格式化串:%(name)s Logger的名字%(levelno)s 數(shù)字形式的日志級別%(levelname)s 文本形式的日志級別%(pathname)s 調(diào)用日志輸出函數(shù)的模塊的完整路徑名,可能沒有%(filename)s 調(diào)用日志輸出函數(shù)的模塊的文件名%(module)s 調(diào)用日志輸出函數(shù)的模塊名%(funcName)s 調(diào)用日志輸出函數(shù)的函數(shù)名%(lineno)d 調(diào)用日志輸出函數(shù)的語句所在的代碼行%(created)f 當前時間,用UNIX標準的表示時間的浮 點數(shù)表示%(relativeCreated)d 輸出日志信息時的,自Logger創(chuàng)建以 來的毫秒數(shù)%(asctime)s 字符串形式的當前時間。默認格式是 “2003-07-08 16:49:45,896”。逗號后面的是毫秒%(thread)d 線程ID。可能沒有%(threadName)s 線程名。可能沒有%(process)d 進程ID。可能沒有%(message)s用戶輸出的消息
    • basicConfig有兩個坑(缺點)
    • 對中文的兼容問題,無法解決中文的亂碼問題
    • 不能同時往文件和屏幕輸出

    利用對象的方式創(chuàng)建logging

    • 程序的充分解耦,讓程序變得高可定制化
    • 各功能相當于綁定,功能的添加時通過對象之間的綁定

      import logging#創(chuàng)建一個logging對象logger = logging.getLogger()#創(chuàng)建一個logging文件對象fh = logging.FileHandler('text.log', encoding='utf-8', mode='a')#創(chuàng)建一個logging控制臺對象sh = logging.StreamHandler() #輸出至什么地方#輸出格式formatter = '%(asctime)s%(lineno)d'#創(chuàng)建輸出格式的對象fm = logging.Formatter(formatter) #設(shè)置一個格式#文件對象和控制臺對象添加輸出格式fh.setFormatter(fm) #以什么格式輸出至什么地方sh.setFormatter(fm)#給logging對象添加logger.addHandler(fh)logger.addHandler(sh)logging.debug('低級別的拍錯信息') #低級別的排錯信息logging.info('正常的信息') #正常信息logging.warning('警告信息') #警告信息logging.error('錯誤信息') #錯誤信息logging.critical('高級別的錯誤信息') #高級別錯誤信息
    • 非常靈活,自定義的程度很高,可以設(shè)定不同的輸出位置和不同的格式
    • logging庫提供了多個組件:Logger、Handler、Filter、Formatter。Logger對象提供應(yīng)用程序可直接使用的接口,Handler發(fā)送日志到適當?shù)哪康牡?#xff0c;Filter提供了過濾日志信息的方法,Formatter指定日志顯示格式。另外,可以通過logger.setLevel(logging.Debug)設(shè)置級別,當然,也可以通過
      fh.setLevel(logging.Debug)單對文件流設(shè)置某個級別

    總結(jié)

    配置方式兩種

    • basicConfig()直接設(shè)置全局
      • 不兼容中文模式
      • 不能同時多位置輸出
    • logging對象創(chuàng)建
      • 高定制,高靈活

    轉(zhuǎn)載于:https://www.cnblogs.com/liliudong/p/9660663.html

    總結(jié)

    以上是生活随笔為你收集整理的日志模块-logging模块的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。