python 日志,【python】日志模塊以及日志組件使用

 2023-10-06 阅读 29 评论 0

摘要:1. 日志級別 級別排序:CRITICAL > ERROR > WARNING > INFO > DEBUGlogging.critical() -->輸出CRITICAL級別日志 logging.error() -->輸入ERROR級別日志 logging.warning() -->輸入WARNING級別日志 logging.info() -->輸入INFO級別日志 loggin

1. 日志級別

級別排序:CRITICAL > ERROR > WARNING > INFO > DEBUGlogging.critical()  -->輸出CRITICAL級別日志
logging.error()     -->輸入ERROR級別日志
logging.warning()     -->輸入WARNING級別日志
logging.info()     -->輸入INFO級別日志
logging.debug()     -->輸入DEBUG級別日志
# 案例:在控制臺分別輸出各個級別的日志
import logginglogging.critical('critical日志信息') # CRITICAL:root:critical日志信息  root是默認日志器的名字
logging.error('error日志信息') #ERROR:root:error日志信息
logging.warning('warning日志信息')
logging.info('info日志信息')
logging.debug('debug日志信息')# print(a) #NameError: name 'a' is not defined# CRITICAL:root:critical
# root是默認日志器的名字;默認的日志器默認日志級別:warning   --篩選日志信息的顯示# 總結:默認只輸入Warning級別及以上級別的日志,如果需要查看到所有的日志,則需要改變默認日志級別# 改變默認日志器的日志級別

2. 設置日志格式

logging.basicConfig()函數可以設置日志級別,日志的格式以及日志的位置等。
# 案例:設置日志級別和日志格式,要求在控制臺分別輸出各個級別的日志,并將日志保存在本地文件
import logging# 默認日志器的設置操作
# 1-輸出位置的設置
logging.basicConfig(filename = 'test2.log',filemode='a')
# 存在一個問題,如果日志信息中有中文,則會顯示亂碼
# 可以用stream來進行解決
file = open('test3.log','a',encoding='utf-8')
logging.basicConfig(stream = file)# 2-級別設置
#logging.basicConfig(level = logging.DEBUG)# 3-格式設置
logging.basicConfig(format = '%(asctime)s ** %(levelname)s ** %(message)s -->%(filename)s:%(lineno)d')logging.critical('critical日志信息') # CRITICAL:root:critical日志信息  root是默認日志器的名字
logging.error('error日志信息') #ERROR:root:error日志信息
logging.warning('warning日志信息')
logging.info('info日志信息')
logging.debug('debug日志信息')# 日志級別對應的數字
# critical:50
# error:40
# warning:30
# info:20
# debug:10

3. 日志組件

日志的四大組件:日志器、處理器、過濾器、格式器日志器:產生各級別日志的載體處理器:日志顯示在哪個位置(控制臺、本地的文件中)控制臺處理器:將日志輸出在控制臺文件處理器:將日志輸出在文件中過濾器:過濾/篩選日志格式器:設置日志顯示的內容以及自定義格式

python 日志、3.1 控制臺處理器

日志器+控制臺處理器
創建日志器 logger=logging.getLogger()日志器設置日志界別
創建控制臺處理器 h=logging.StreamHandler()處理器設置日志界別
日志器添加處理器  logger.addHandler(h)
輸出日志
# 案例:自定義日志器和處理器,并在控制臺輸出所有的級別的日志信息
import logging
# 創建日志器
log = logging.getLogger('kate')
# 創建控制臺處理器
s_handler = logging.StreamHandler()
# 日志器添加處理器
log.addHandler(s_handler)
# 輸出日志
log.critical('critical日志信息') # CRITICAL:root:critical日志信息  root是默認日志器的名字
log.error('error日志信息') #ERROR:root:error日志信息
log.warning('warning日志信息')
log.info('info日志信息')
log.debug('debug日志信息')

總結:自定義的日志器默認的日志級別也是warning,所以只能輸出警告及以上級別的日志信息
?

# 如何輸出所有級別的日志信息
# 1:日志器可以設置日志級別
# 2:處理器也可以設置日志級別
#
import logging
# 創建日志器
log = logging.getLogger('kate')
# 日志器設置日志級別
# log.setLevel(level = logging.DEBUG)# 創建控制臺處理器
s_handler = logging.StreamHandler()
# 處理器設置日志級別
s_handler.setLevel(level = logging.DEBUG)# 總結:當日志器和處理器同時設置了日志級別時,誰設置的日志級別高就用誰的設置# 問題:當日志器沒有設置級別,但是處理器設置為DEBUG級別之后,日志信息也只是顯示warning及以上的日志信息?
# 日志器沒有設置級別的時候,默認是warning ,warning>DEBUG,所以顯示warning及以上的日志信息# 日志器添加處理器
log.addHandler(s_handler)
# 輸出日志
log.critical('critical日志信息') # CRITICAL:root:critical日志信息  root是默認日志器的名字
log.error('error日志信息') #ERROR:root:error日志信息
log.warning('warning日志信息')
log.info('info日志信息')
總結:當日志器和處理器同時都設置了日志級別,則誰的級別高就以誰為準

3.2? ?日志器+文件處理器

創建日志器 logger=logging.getLogger()日志器設置日志級別:logger.setLevel(logging.DEBUG)
創建文件處理器 h=logging.FileHandler(filename, mode='a', encoding=None)文件處理器設置日志級別:h..setLevel(logging.INFO)
日志器添加處理器  logger.addHandler(h)
日志輸出
# 案例:自定義日志器和文件處理器,并在文件中保存所有的級別的日志信息
import logging
# 創建日志器
log = logging.getLogger('kate')
# 創建文件處理器
s_handler = logging.FileHandler(filename='demo1.log',encoding='utf-8')
# 日志器添加處理器
log.addHandler(s_handler)
# 輸出日志
log.critical('critical日志信息') # CRITICAL:root:critical日志信息  root是默認日志器的名字
log.error('error日志信息') #ERROR:root:error日志信息
log.warning('warning日志信息')
log.info('info日志信息')
log.debug('debug日志信息')
總結:自定義的日志器默認的日志級別也是警告,所以只能輸出警告及以上級別的日志信息如何輸出所有級別的日志信息1:日志器可以設置日志級別2:文件處理器也可以設置日志級別總結:當日志器和處理器同時都設置了日志級別,則誰的級別高就以誰為準

3.3 格式處理器

創建日志器:logger=logging.getLogger()日志器設置日志級別:logger.setLevel(logging.DEBUG)
創建處理器:s_hand=logging.StreamHandler()處理器設置日志級別:s_hand.setLevel(logging.INFO)
創建格式器:format1=logging.Formatter(fmt="%(levelname)s === %(message)s")
日志器添加處理器:logger.addHandler(h)
處理器添加格式器:s_hand.setFormatter(format1)
日志輸出
#案例:自定義日志器、處理器和格式器,分別在控制臺和文件中記錄日志信息,并且給日志信息設置不同的格式
import logging
# 創建日志器
log = logging.getLogger('kate')# 創建控制臺處理器
s_handler = logging.StreamHandler()# 創建一個文件處理器
f_handler = logging.FileHandler(filename = 'demo2.log',encoding='utf-8')# 日志器添加處理器
log.addHandler(s_handler)
log.addHandler(f_handler)# 創建一個格式器
f1 = logging.Formatter(fmt= '%(asctime)s**%(levelname)s**%(filename)s:''%(lineno)d:%(message)s==%(name)s')   # 日志器的名字:%(name)s
f2 = logging.Formatter(fmt= '%(asctime)s**%(levelname)s**%(message)s')
# 處理器設置格式器
s_handler.setFormatter(f2)  #控制臺處理器日志添加了指定的格式f2
f_handler.setFormatter(f1)  # 文件處理器日志添加了指定的格式f1# 輸出日志
log.critical('critical日志信息') # CRITICAL:root:critical日志信息  root是默認日志器的名字
log.error('error日志信息') #ERROR:root:error日志信息
log.warning('warning日志信息')
log.info('info日志信息')
log.debug('debug日志信息')
如何將日志記錄在控制臺和文件中,并且兩個日志保存的級別和格式都不相同
1-日志器設置日志級別
2-控制器設置日志級別
需求:控制臺輸出error以上的日志,文件中保存debug以上的日志信息
控制臺輸出error以上的日志:日志設置日志級別:debug控制臺處理器設置日志級別:error文件輸出debug以上的日志:日志設置日志級別:debug文件處理器設置日志級別:debug
import logging
# 創建日志器
log = logging.getLogger('kate')
# 日志設置日志級別:DEBUG
log.setLevel(logging.DEBUG)# 創建控制臺處理器
s_handler = logging.StreamHandler()
# 控制臺處理器設置日志級別:error
s_handler.setLevel(logging.ERROR)# 創建一個文件處理器
f_handler = logging.FileHandler(filename = 'demo3.log',encoding='utf-8')
# 文件處理器設置日志級別:debug
f_handler.setLevel(logging.DEBUG)# 日志器添加處理器
log.addHandler(s_handler)
log.addHandler(f_handler)# 創建一個格式器
f1 = logging.Formatter(fmt= '%(asctime)s**%(levelname)s**%(filename)s:''%(lineno)d:%(message)s==%(name)s')   # 日志器的名字:%(name)s
f2 = logging.Formatter(fmt= '%(asctime)s**%(levelname)s**%(message)s')
# 處理器設置格式器
s_handler.setFormatter(f2)  #控制臺處理器日志添加了指定的格式f2
f_handler.setFormatter(f1)  # 文件處理器日志添加了指定的格式f1# 輸出日志
log.critical('critical日志信息') # CRITICAL:root:critical日志信息  root是默認日志器的名字
log.error('error日志信息') #ERROR:root:error日志信息
log.warning('warning日志信息')
log.info('info日志信息')
log.debug('debug日志信息')

python日志級別。?

?

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/120691.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息