国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

一篇文章帶你搞定 Python 中 Logging 模塊

開發 后端
本文以Pythonl基礎為例,主要介紹了logging模塊的基礎使用方法,以及在現實應用中遇到的問題,進行了詳細的解答。

[[435432]]

Hey,大家好呀,我是Go進階者。

一、基礎使用

1. logging使用場景

日志是什么?這個不用多解釋。百分之九十的程序都需要提供日志功能。Python內置的logging模塊,為我們提供了現成的高效好用的日志解決方案。但是,不是所有的場景都需要使用logging模塊,

下面是Python官方推薦的使用方法:(來源百度)

任務場景 最佳工具
普通情況下,在控制臺顯示輸出 print()
報告正常程序操作過程中發生的事件 logging.info()(或者更詳細的logging.debug())
發出有關特定事件的警告 warnings.warn()或者logging.warning()
報告錯誤 彈出異常
在不引發異常的情況下報告錯誤 logging.error(), logging.exception()或者logging.critical()

logging模塊定義了下表所示的日志級別,按事件嚴重程度由低到高排列(注意是全部大寫!因為它們是常量。):

  1. import logging 
  2. logging.basicConfig(level = logging.INFO,format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
  3. logger = logging.getLogger(__name__) 
  4.  
  5. logger.info("Start print log"
  6. logger.debug("Do something"
  7. logger.warning("Something maybe fail."
  8. logger.info("Finish"

logging中可以選擇很多消息級別,如debug、info、warning、error以及critical。通過賦予logger或者handler不同的級別,開發者就可以只輸出錯誤信息到特定的記錄文件,或者在調試時只記錄調試信息。

  1. logging.basicConfig(level = logging.DEBUG,format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'

例如,我們將logger的級別改為DEBUG,

再觀察一下輸出結果:

控制臺輸出,可以發現,輸出了debug的信息。

  • logging.basicConfig函數各參數:
  • filename:指定日志文件名;
  • filemode:和file函數意義相同,指定日志文件的打開模式,'w'或者'a';
  • format:指定輸出的格式和內容,format可以輸出很多有用的信息。
  • datefmt:指定時間格式,同time.strftime();
  • level:設置日志級別,默認為logging.WARNNING;
  • stream:指定將日志的輸出流,可以指定輸出到sys.stderr,sys.stdout或者文件,默認輸出到sys.stderr,當stream和filename同時指定時,stream被忽略;
  1. #參數:作用 
  2. %(levelno)s:打印日志級別的數值 
  3. %(levelname)s:打印日志級別的名稱 
  4. %(pathname)s:打印當前執行程序的路徑,其實就是sys.argv[0] 
  5. %(filename)s:打印當前執行程序名 
  6. %(funcName)s:打印日志的當前函數 
  7. %(lineno)d:打印日志的當前行號 
  8. %(asctime)s:打印日志的時間 
  9. %(thread)d:打印線程ID 
  10. %(threadName)s:打印線程名稱 
  11. %(process)d:打印進程ID 
  12. %(message)s:打印日志信息 

2. 將日志寫入到文件

設置logging,創建一個FileHandler,并對輸出消息的格式進行設置,將其添加到logger,然后將日志寫入到指定的文件。

  1. import logging 
  2. logger = logging.getLogger(__name__) 
  3. logger.setLevel(level = logging.INFO) 
  4. handler = logging.FileHandler("log.txt"
  5. handler.setLevel(logging.INFO) 
  6. formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'
  7. handler.setFormatter(formatter) 
  8. logger.addHandler(handler) 
  9.  
  10. logger.info("Start print log"
  11. logger.debug("Do something"
  12. logger.warning("Something maybe fail."
  13. logger.info("Finish"

打開log.txt文件。

2. 將日志同時輸出到屏幕和日志文件

logger中添加StreamHandler,可以將日志輸出到屏幕上

  1. import logging 
  2. logger = logging.getLogger(__name__) 
  3. logger.setLevel(level = logging.INFO) #添加StreamHandler 
  4. handler = logging.FileHandler("log.txt"
  5. handler.setLevel(logging.INFO) 
  6. formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'
  7. handler.setFormatter(formatter) 
  8.  
  9. console = logging.StreamHandler() 
  10. console.setLevel(logging.INFO)  #添加StreamHandler 
  11.  
  12. logger.addHandler(handler) 
  13. logger.addHandler(console) 
  14.  
  15. logger.info("Start print log"
  16. logger.debug("Do something"
  17. logger.warning("Something maybe fail."
  18. logger.info("Finish"

控制臺信息。

log.text信息。

3. 設置消息的等級

可以設置不同的日志等級,用于控制日志的輸出。

  1. #日志等級:使用范圍 
  2. FATAL:致命錯誤 
  3. CRITICAL:特別糟糕的事情,如內存耗盡、磁盤空間為空,一般很少使用 
  4. ERROR:發生錯誤時,如IO操作失敗或者連接問題 
  5. WARNING:發生很重要的事件,但是并不是錯誤時,如用戶登錄密碼錯誤 
  6. INFO:處理請求或者狀態變化等日常事務 
  7. DEBUG:調試過程中使用DEBUG等級,如算法中每個循環的中間狀態 

4. 捕獲traceback

Python中的traceback模塊被用于跟蹤異常返回信息,可以在logging中記錄下traceback.

  1. import logging 
  2. logger = logging.getLogger(__name__) 
  3. logger.setLevel(level = logging.INFO) 
  4. handler = logging.FileHandler("log.txt"
  5. handler.setLevel(logging.INFO) 
  6. formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'
  7. handler.setFormatter(formatter) 
  8.  
  9. console = logging.StreamHandler() 
  10. console.setLevel(logging.INFO) 
  11.  
  12. logger.addHandler(handler) 
  13. logger.addHandler(console) 
  14.  
  15. logger.info("Start print log"
  16. logger.debug("Do something"
  17. logger.warning("Something maybe fail."
  18. try: 
  19.     open("sklearn.txt","rb"
  20. except (SystemExit,KeyboardInterrupt): 
  21.     raise 
  22. except Exception: 
  23.     logger.error("Faild to open sklearn.txt from logger.error",exc_info = True
  24.  
  25. logger.info("Finish"

控制臺和日志文件log.txt中輸出。

可以使用logger.exception(msg,args),它等價于logger.error(msg,exc_info = True,args)。

將logger.error("Faild to open sklearn.txt from logger.error",exc_info = True)

替換為logger.exception("Failed to open sklearn.txt from logger.exception")

控制臺和日志文件log.txt中輸出。

二、總結

本文以Pythonl基礎為例,主要介紹了logging模塊的基礎使用方法,以及在現實應用中遇到的問題,進行了詳細的解答。

通過一些案例的講解和運行效果圖的截取,使用Python語言,能夠幫助讀者更好的去理解Python。 

我是Go進階者,如果覺得還不錯,記得動手點贊一下哈。感謝你的觀看!

 

責任編輯:武曉燕 來源: Go語言進階學習
相關推薦

2021-11-10 09:19:41

PythonShutil模塊

2024-04-17 13:21:02

Python匿名函數

2021-05-15 10:16:14

Python匿名函數

2020-02-28 11:29:00

ElasticSear概念類比

2021-03-06 10:05:03

Python函數變量

2021-11-13 10:11:45

Pythonurllib庫Python基礎

2022-05-28 15:59:55

PythonPandas數據可視化

2022-03-30 10:51:40

JavaScript性能調優

2021-05-15 09:18:04

Python進程

2021-05-05 11:29:53

Pythonpyglet開發模塊

2021-05-18 09:00:28

Pythonclass

2021-03-15 08:38:42

StringBuffeJava基礎Java開發

2022-02-21 09:44:45

Git開源分布式

2023-05-12 08:19:12

Netty程序框架

2021-06-30 00:20:12

Hangfire.NET平臺

2025-02-19 10:39:26

Python高階函數函數名

2021-04-24 10:19:41

Python函數指向

2021-03-24 10:00:32

Python遞歸函數Python基礎

2021-05-31 08:59:57

Java數據庫訪問JDBC

2021-01-13 08:40:04

Go語言文件操作
點贊
收藏

51CTO技術棧公眾號

日韩中文字幕网址| 中文字幕日产av一二三区| 欧美+日本+国产+在线a∨观看| 另类专区欧美制服同性| 毛片无码国产| 日韩成人在线网站| 在线手机中文字幕| 国产一区二区三区在线观看视频| 在线免费三级电影网站| 亚洲欧美成人一区二区在线电影| 新版的欧美在线视频| 在线观看视频99| 国产麻豆精品| 欧美一级电影久久| 精品国产精品| 成人动漫视频在线观看免费| 91精品国偷自产在线电影 | 日韩精品电影一区亚洲| 91麻豆蜜桃| 99热精品在线观看| 免费久久久久久| 99精品热视频| www.男人的天堂.com| 精品久久香蕉国产线看观看gif| 桃花色综合影院| 欧美伦理视频网站| 国产99在线观看| 久久国产天堂福利天堂| 久久悠悠精品综合网| 91精品在线影院| 日韩vs国产vs欧美| 免费无码av片在线观看| 亚洲国产精品麻豆| 尤物视频在线看| 国产亚洲一区二区精品| 精品一区二区三区无码视频| www中文字幕在线观看| 伊人久久综合97精品| 中文字幕av一区二区三区四区| 国产精品视频专区| 亚洲欧美清纯在线制服| 91九色丨porny丨国产jk| 一区二区三区中文在线| 18videosex性欧美麻豆| 久久天天躁狠狠躁老女人| 日韩免费特黄一二三区| 一区二区精品国产| 日韩一区在线免费观看| 国产黄色在线网站| 欧美黑人性视频| 黄色在线一区| 精品国产一二三四区| 日韩欧美高清视频| 日本一区免费网站| 亚洲free性xxxx护士hd| 成人精品在线视频观看| 日本亚洲一区| 色噜噜狠狠狠综合曰曰曰88av| 日韩av片子| 黄色网在线视频| 一本大道av一区二区在线播放 | 800av在线免费观看| 亚洲综合免费观看高清完整版在线 | 国产情侣久久| 中文字幕在线观看第三页| 欧美唯美清纯偷拍| 99a精品视频在线观看| 久久青青草原| 国产精品乱码一区二区三区软件| 九七久久人人| 国产精品成人v| 成人性生交大片免费看中文网站| 视频一区二区三区国产 | 成人看片网页| 国产精品福利视频| 自拍偷拍亚洲欧美日韩| 午夜激情在线播放| 国产精品免费在线播放| 国产农村妇女毛片精品久久麻豆| 538在线视频| 成人在线观看av| 亚洲欧洲99久久| 末成年女av片一区二区下载| 国产精品美女免费看| 久久免费电影网| 中文字幕资源网在线观看免费 | 日韩av自拍| 91av俱乐部| 亚洲乱亚洲乱妇无码| 亚洲精华国产欧美| 一区二区三区高清在线视频 | 伊人青青综合网| 成人免费网站视频www| 日韩成人xxxx| 国产精品亚洲аv天堂网| 国产精品1区2区3区在线观看| 精品三级久久久久久久电影聊斋| 久久99久久亚洲国产| 精品一区二区在线视频| 色大18成网站www在线观看| 日本欧美一级片| 欧美激情一区二区在线| 国产另类xxxxhd高清| 先锋影音网一区| 欧美色手机在线观看| 手机在线一区二区三区| 成人午夜天堂| 97国产精品视频人人做人人爱| 99在线精品免费| 欧美激情啪啪| 日本日本19xxxⅹhd乱影响| 日韩大片在线观看视频| 人人狠狠综合久久亚洲| 成人免费观看视频大全| 国产99在线免费| 色成年激情久久综合| 午夜激情久久| 伊人中文字幕在线| 91久久国产精品| 亚洲丰满少妇videoshd| 精品久久影院| 在线播放中文字幕| 成人国产精品久久久| 偷窥少妇高潮呻吟av久久免费 | 久久久久亚洲精品| 91麻豆.com| 成人搞黄视频| 国产国产国产国产国产国产| 热久久这里只有| 亚洲国产人成综合网站| 91九色精品国产一区二区| 深夜福利视频在线免费观看| 91超碰在线免费观看| 欧美日韩中文一区| 久久一区国产| 中文字幕21页在线看| 国内精品在线观看视频| 色综合色综合久久综合频道88| 国产精品妹子av| 欧美hentaied在线观看| 国产永久av在线| 日韩中文一区| 在线日韩日本国产亚洲| 久久免费电影网| 日韩精品一区二区三区免费观看| 国产小视频在线| 午夜精品短视频| 色偷偷888欧美精品久久久| 国产精品视频yy9299一区| 成人在线免费观看网站| av在线天堂| 伊人狠狠色丁香综合尤物| 一区二区三区亚洲| 国产精品久久99| 黄色成人av网站| 香蕉成人av| 69日小视频在线观看| av成人观看| 亚洲天堂免费观看| 国产精品网曝门| 在线欧美日韩| 青青在线精品| 好男人社区在线视频| 久久综合中文色婷婷| 色哟哟亚洲精品一区二区| 亚洲综合色在线| 日韩黄色在线观看| 国产ts一区| 国产精品实拍| 男女爽爽爽视频| 国产欧美综合精品一区二区| 一本色道久久88综合日韩精品| 日韩美女啊v在线免费观看| 亚洲精品专区| 美女久久精品| porn视频在线观看| 干日本少妇首页| 国产精品三区www17con| 中文字幕亚洲欧美日韩高清| 欧美日韩国产综合视频在线观看中文| 美国欧美日韩国产在线播放| 美国十次av导航亚洲入口| 怡红院在线播放| 国产主播色在线| 国产成人免费高清视频| 国产精品欧美日韩久久| 亚洲深夜福利网站| 日本高清不卡aⅴ免费网站| aaa国产一区| 影音先锋国产精品| 欧美福利在线播放网址导航| h片视频在线观看| 依依成人在线| 欧美xxxxx在线视频| 欧美一级日本a级v片| 国产成人精品电影久久久| 中文字幕亚洲欧美| 日韩一级黄色大片| 五月天亚洲精品| 中文字幕欧美日韩一区|