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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

logging记录日志

發(fā)布時間:2023/11/29 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 logging记录日志 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

日志是一個系統(tǒng)的重要組成部分,用以記錄用戶操作系統(tǒng)運(yùn)行狀態(tài)錯誤信息。日志記錄的好壞直接關(guān)系到系統(tǒng)出現(xiàn)問題時定位的速度。logging模塊Python2.3版本開始成為Python標(biāo)準(zhǔn)庫的一部分。

?

日志級別

在最簡單的使用中,我們直接導(dǎo)入logging模塊,然后調(diào)用它的debuginfowarnerrorcritical等函數(shù)記錄日志。默認(rèn)情況下,logging模塊將日志打印到屏幕終端,日志級別為WARNNING,也就是說日志級別大于等于WARNING的日志才會被顯示

#!/usr/bin/python3 import logginglogging.debug('debug message') logging.info('info message') logging.warn('warn message') logging.error('error.message') logging.critical('critical.message') default_logging.py

程序執(zhí)行結(jié)果如下:

$ python3 default_logging.py WARNING:root:warn message ERROR:root:error.message CRITICAL:root:critical.message

日志級別是一個邏輯上的概念,用來區(qū)分日志的重要程度。將日志分為不停級別的日志后,一方面可以在大多數(shù)時間只保存級別比較高的日志來提高性能;領(lǐng)一方面也便于日志的分析。例如,從一個超大的日志文件中,快速找出幾條錯誤信息。

在python的logging模塊中,日志分為5個級別:

日志級別權(quán)重含義
CAITICAL50嚴(yán)重錯誤,表名軟件已不能繼續(xù)運(yùn)行了
ERROR40發(fā)生嚴(yán)重的錯誤,必須馬上處理
WARNING30應(yīng)用程序可以容忍這些信息,軟件還是在正常工作,不過它們應(yīng)該被檢查及修復(fù),否則將在不久的將來發(fā)生問題
INFO20證明事情按預(yù)期工作,突出強(qiáng)調(diào)應(yīng)用程序的運(yùn)行過程
DEBUG10詳細(xì)信息,只有開發(fā)人員調(diào)試程序時才需要關(guān)注的事情

配置日志格式

在使用logging記錄日志之前,我們可以進(jìn)行一些簡單的配置,如下:

#!/usr/bin/python3 import logginglogging.basicConfig(filename='app.log', level=logging.INFO)logging.debug('debug message') logging.info('info message') logging.warn('warn message') logging.error('error.message') logging.critical('critical.message')

執(zhí)行上面的程序,會在當(dāng)前目錄下產(chǎn)生一個app.log文件。該文件中存在INFO及INFO以上級別的日志記錄。

上面我們通過basicConfig方法對日志進(jìn)行了簡單的配置,我們也可以進(jìn)行更加復(fù)雜的日志配置。在這之前先了解logging模塊中的幾個概念:

  • Logger:日志記錄器,是應(yīng)用程序中能直接使用的接口
  • Handler: 日志處理器,用以表名將日志保存到什么地方以及保存多久
  • Formatter: 格式化,用以配置日志的輸出格式

在典型的使用場景中,一個日志記錄器使用一個日志處理器,一個日志處理器使用一個日志格式化

python的logging模塊提供給你了多種方式來配置日志。對于比較簡單的腳本,可以直接使用basicConfig在代碼中配置日志對于比較復(fù)雜的項(xiàng)目,可以將日志的配置保存在一個配置文件中,然后在代碼中使用fileConfig函數(shù)讀取配置文件。

?

源碼中配置日志示例

在這個例子中,日志文件會保存所有DEBUG級別及以上級別的日志。每一條日志包含了打印日志的時間,日志的級別和日志的內(nèi)容

#!/usr/bin/python3 import logginglogging.basicConfig(filename='app.log',level=logging.DEBUG,format='%(asctime)s : %(levelname)s : %(message)s')logging.debug('debug message') logging.info('info message') logging.warn('warn message') logging.error('error.message') logging.critical('critical.message')

?

典型的日志配置文件示例

對于復(fù)雜的項(xiàng)目,一般將日志配置保存到配置文件中。如下:logging.cnf

#首先在[loggers]聲明一個名為root的logger [loggers] keys = root#在[handlers]中聲明一個名為logfile的handler [handlers] keys = logfile#在[formatters]中聲明一個名為generic的formatter [formatters] keys = generic#在[logger_root]中定義root這個logger所使用的handler [logger_root] handlers = logfile#在[handler_logfile]中定義handler輸出日志方式、日志文件的切換時間等 [handler_logfile] class = handlers.TimedRotatingFileHandler args = ('app.log',) level = DEBUG format = generic#[在formatter_generic]中定義了日志的格式,包括日志產(chǎn)生的時間、日志級別、產(chǎn)生日志的文件名和行號等信息 [formatter_generic] format = '%(asctime)s %(levelname)-5.5s [%(name)s:%(lineno)s] %(message)s'

python代碼中使用logging.config模塊的fileConfig函數(shù)加載日志配置

#!/usr/bin/python3 import logging import logging.configlogging.config.fileConfig('logging.cnf')logging.debug('debug message') logging.info('info message') logging.warn('warn message') logging.error('error.message') logging.critical('critical.message')

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

總結(jié)

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

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