一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

第10章:python自動化——logging日志庫

 福兮007 2023-06-13 發(fā)布于上海

目錄

一、日志的基本應(yīng)用

1.log日志的直接創(chuàng)建和使用

 2.traceback.format_exc()在日志的用法

二、日志的進(jìn)階使用

1.設(shè)置日志控制臺輸出

 2.設(shè)置日志文件中輸出

三、配置文件設(shè)置與讀取


一、日志的基本應(yīng)用

1.log日志的直接創(chuàng)建和使用

python運(yùn)行過程中,我們經(jīng)常使用print來作為輸出的方式。包括在調(diào)試和查看代碼運(yùn)行情況的時候。在自動化運(yùn)行時我們也不可能一直盯著電腦屏幕來看整體的運(yùn)行。就需要有一個模塊來專門記錄整個運(yùn)行過程,如果出現(xiàn)問題則直接記錄下來。于是乎就有了日志的模塊logging庫。

logging庫本身是Python自帶的官方庫之一。所以不需要下載直接調(diào)用就可以了。

  1. '''
  2. Logging庫的基本使用:
  3. 1. 創(chuàng)建日志對象,進(jìn)行設(shè)置,日志等級是需要根據(jù)實際情況自行設(shè)置的。
  4. 2. 調(diào)用日志模塊來實現(xiàn)日志的輸出
  5. 3. 選擇將日志信息保存在文件之中
  6. '''
  7. # 導(dǎo)入logging庫
  8. import logging
  9. from class09.logging_config import getLogger
  10. # logging庫的創(chuàng)建:設(shè)置日志的相關(guān)內(nèi)容
  11. logging.basicConfig(
  12. level=logging.DEBUG, # 設(shè)置日志的輸出默認(rèn)等級,不設(shè)置的情況下,默認(rèn)為warning等級
  13. # 設(shè)置日志的格式信息:asctime表示當(dāng)前時間,levelname表示日志等級,filename表示運(yùn)行的py文件名稱,lineno表示行數(shù),message表示輸出信息
  14. format='%(asctime)s %(levelname)s %(filename)s %(lineno)s:%(message)s',
  15. filename='./logfile/log.log', # 設(shè)置日志寫入文件的保存文件名稱及路徑,加入此設(shè)置則會在運(yùn)行時生成一個日志文件
  16. # 日志文件的內(nèi)容寫入,默認(rèn)是以追加的方式來進(jìn)行寫入,也可以通過修改設(shè)置來改變寫入的模式,一般不改
  17. # filemode='w'
  18. )
  19. # 日志輸出不同等級的內(nèi)容:debug < info < warning < error < critical
  20. logging.debug('這是debug的內(nèi)容')
  21. logging.info('這是info的內(nèi)容')
  22. logging.warning('這是warning的內(nèi)容')
  23. logging.error('這是erro的內(nèi)容')
  24. logging.critical('這是critical的內(nèi)容')

 輸出效果如下:

 log.log日志文件的顯示如下所示:

 2.traceback.format_exc()在日志的用法

  1. import logging
  2. import traceback
  3. logging.basicConfig(
  4. level=logging.DEBUG,
  5. format='%(asctime)s %(message)s %(filename)s %(lineno)s %(levelname)s',
  6. filemode='a',
  7. filename='./file/log.log'
  8. )
  9. logging.debug('這是debug的內(nèi)容')
  10. logging.info('這是info的內(nèi)容')
  11. logging.warning('這是warning的內(nèi)容')
  12. try:
  13. 1/0
  14. except:
  15. # traceback.format_exc()實現(xiàn)將異常信息寫入日志文件中。便于出錯后的調(diào)試。
  16. # format_exc是生成異常信息的字符串內(nèi)容??梢詐rint也可以寫入文件。
  17. logging.error(traceback.format_exc())
  18. logging.critical('這是critical的內(nèi)容')

 在日志中的顯示效果如下圖所示:

二、日志的進(jìn)階使用

logging的運(yùn)行都是基于4個組件來實現(xiàn)的。除去通過基本的調(diào)用以外,也可以直接調(diào)用組件來實現(xiàn)日志的記錄
    1. logger:記錄器,提供基本的能夠被程序直接調(diào)用的接口
    2. handler:處理器,提供將記錄器的內(nèi)容發(fā)送到目的地的作用
    3. filter:過濾器,提供更好的粒度控制。
    4. formatter:格式化器,設(shè)置日志的所有內(nèi)容的格式

1.設(shè)置日志控制臺輸出

設(shè)置方法如下:

  1. import logging
  2. # 通過logger創(chuàng)建一個記錄器
  3. logger = logging.getLogger('zhp')
  4. # 設(shè)置日志記錄器的等級
  5. logger.setLevel(logging.DEBUG)
  6. # 設(shè)置記錄器的格式
  7. logger_format = logging.Formatter('%(levelname)s %(asctime)s %(filename)s %(lineno)s:%(message)s')
  8. # 選擇將日志輸出到哪里去:控制臺輸出
  9. stream_handler = logging.StreamHandler()
  10. # 將handler添加到記錄器中
  11. logger.addHandler(stream_handler)
  12. # 日志的輸出
  13. logger.info('這是logger的info信息')
  14. logger.error('這是logger的erro信息')

輸出效果如下:


logger的格式不會生效,在哪里輸出就需要通過對應(yīng)位置的handler的格式設(shè)置才能生效。logger的等級設(shè)置也一樣。所以需要將定義的記錄器的格式賦值給到控制臺,代碼如下:

stream_handler.setFormatter(logger_format)

效果如下所示:

 2.設(shè)置日志文件中輸出

  1. import logging
  2. # 通過logger創(chuàng)建一個記錄器
  3. logger = logging.getLogger('hzp')
  4. # 設(shè)置日志記錄器的等級
  5. logger.setLevel(logging.DEBUG)
  6. # 設(shè)置記錄器的格式
  7. logger_format = logging.Formatter('%(levelname)s %(asctime)s %(filename)s %(lineno)s: %(message)s')
  8. # 選擇將日志輸出到哪里去:控制臺輸出
  9. stream_handler = logging.StreamHandler()
  10. # 控制臺輸出的等級
  11. stream_handler.setLevel(logging.INFO)
  12. # 控制臺的格式
  13. stream_handler.setFormatter(logger_format)
  14. # 將日志在文件中輸出
  15. file_handler = logging.FileHandler(filename='./file/log1.log')
  16. # 文件輸出等級
  17. file_handler.setLevel(logging.DEBUG)
  18. # 設(shè)置文件輸出的格式
  19. file_handler.setFormatter(logger_format)
  20. # 將handler添加到記錄器中
  21. logger.addHandler(stream_handler)
  22. logger.addHandler(file_handler)
  23. # 日志的輸出
  24. logger.debug('這是logger的debug信息')
  25. logger.info('這是logger的info信息')
  26. logger.error('這是logger的error信息')

 自動生成了log1.log日志文件,控制臺輸出的效果如下:

 文件之中的效果如下:

三、配置文件設(shè)置與讀取

配置項是固定不需要修改的。
獲取配置項通過logging.config.fileConfig(配置文件)的方式獲取。

配置文件的內(nèi)容一定記得不要寫錯,不然會出現(xiàn)問題,其次不要寫入中文相關(guān)內(nèi)容,容易因為編碼格式造成報錯。

配置項文件,是log_conf.ini這樣的格式,具體內(nèi)容不需要大家去記,直接抄就行了,需要用的時候,直接復(fù)制過去調(diào)用即可,配置項文件如下:

  1. [loggers]
  2. keys = root
  3. [handlers]
  4. keys = fileHandler,streamHandler
  5. [formatters]
  6. keys = simpleFormatter
  7. [logger_root]
  8. level = DEBUG
  9. handlers = fileHandler,streamHandler
  10. [handler_fileHandler]
  11. class = FileHandler
  12. level = DEBUG
  13. formatter = simpleFormatter
  14. args = ('log_conf.log','a','utf-8')
  15. [handler_streamHandler]
  16. class = StreamHandler
  17. level = DEBUG
  18. formatter = simpleFormatter
  19. [formatter_simpleFormatter]
  20. format = %(levelname)s %(asctime)s %(filename)s %(module)s %(funcName)s %(lineno)s:%(message)s

讀取ini配置項,實現(xiàn)logging的配置與輸出,要讀取ini實現(xiàn)日志庫的配置,
則需要調(diào)用logging.config模塊

  1. # 導(dǎo)入logging.config
  2. import logging.config
  3. # 將日志記錄器封裝為函數(shù),如果需要,則直接調(diào)用,生成logger來進(jìn)行日志的記錄
  4. def getLogger():
  5. # 讀取配置文件
  6. logging.config.fileConfig('log_conf.ini')
  7. # 獲取記錄器
  8. logger = logging.getLogger()
  9. return logger
  10. # 實例化記錄器對象
  11. logger = getLogger()
  12. # 日志的輸出
  13. logger.debug('這是debug信息')
  14. logger.info('這是info信息')
  15. logger.warning('這是warning信息')
  16. logger.error('這是error信息')

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    午夜福利黄片免费观看| 亚洲午夜福利不卡片在线| 日本不卡视频在线观看| 欧美一区二区不卡专区| 日本人妻的诱惑在线观看| 欧美日韩国产另类一区二区| 日韩成人免费性生活视频| 日本丁香婷婷欧美激情| 插进她的身体里在线观看骚| 亚洲最大福利在线观看| 午夜精品国产一区在线观看| 中文字幕一区二区久久综合| 亚洲精品美女三级完整版视频| 日韩精品中文在线观看| 中文字幕日韩一区二区不卡 | 国产欧美日韩精品一区二区| 免费在线观看激情小视频| 国产午夜精品在线免费看| 五月天综合网五月天综合网| 2019年国产最新视频| 好吊妞视频免费在线观看| 区一区二区三中文字幕| 亚洲中文在线中文字幕91| 日韩精品视频香蕉视频| 好吊色免费在线观看视频| 亚洲精品小视频在线观看| 日韩中文字幕免费在线视频| 超碰在线播放国产精品| 好吊妞视频只有这里有精品| 91爽人人爽人人插人人爽| a久久天堂国产毛片精品| 欧美一区二区三区99| 日韩成人动作片在线观看| a久久天堂国产毛片精品| 亚洲伦片免费偷拍一区| 久久99精品国产麻豆婷婷洗澡| 国产免费一区二区三区不卡| 在线免费不卡亚洲国产| 男人和女人干逼的视频| 国产偷拍盗摄一区二区| 亚洲精品中文字幕在线视频|