日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

日志模块-logging模块

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

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

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

      # 使用#導入logging模塊import logginglogging.debug('低級別的拍錯信息') #低級別的排錯信息logging.info('正常的信息') #正常信息logging.warning('警告信息') #警告信息logging.error('錯誤信息') #錯誤信息logging.critical('高級別的錯誤信息') #高級別錯誤信息#結果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('高級別的錯誤信息') #高級別錯誤信息#結果 當前文件路徑下生成了文件logger.log 其內容如下: INFO:root:正常的信息 WARNING:root:警告信息 ERROR:root:錯誤信息 CRITICAL:root:高級別的錯誤信息
    • 因為通過level=logging.INFO設置了日志的通知級別,所以文件中打印出了INFO的信息

    basicConfig()常用配置參數

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

    利用對象的方式創建logging

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

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

    總結

    配置方式兩種

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

    轉載于:https://www.cnblogs.com/liliudong/p/9660663.html

    總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。