色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python 日志模塊logging的使用場(chǎng)景及示例

瀏覽:73日期:2022-06-30 15:13:28
前言

日志是對(duì)于軟件執(zhí)行所發(fā)生的事件的一種追蹤記錄方式。日常使用過(guò)程中對(duì)代碼執(zhí)行的錯(cuò)誤和問(wèn)題會(huì)進(jìn)行查看日志來(lái)分析定位問(wèn)題所在。平常編寫(xiě)代碼以及調(diào)試也經(jīng)常用到。通常的新手的做法是直接print打印,但是打印的結(jié)果只在控制臺(tái)顯示。今天我們學(xué)習(xí)一種高級(jí)的日志打印和記錄模塊logging。

logging提供了一系列的函數(shù),它們是debug(), info(), warning(), error(), 和critical()。

他們的使用場(chǎng)景請(qǐng)看下表

你想要執(zhí)行的任務(wù) 此任務(wù)的最好的工具 對(duì)于命令行或程序的應(yīng)用,結(jié)果顯示在控制臺(tái)。 print() 在對(duì)程序的普通操作發(fā)生時(shí)提交事件報(bào)告(比如:狀態(tài)監(jiān)控和錯(cuò)誤調(diào)查) logging.info() 函數(shù)(當(dāng)有診斷目的需要詳細(xì)輸出信息時(shí)使用 logging.debug() 函數(shù)) 提出一個(gè)警告信息基于一個(gè)特殊的運(yùn)行時(shí)事件 warnings.warn()位于代碼庫(kù)中,該事件是可以避免的,需要修改客戶端應(yīng)用以消除告警logging.warning() 不需要修改客戶端應(yīng)用,但是該事件還是需要引起關(guān)注 對(duì)一個(gè)特殊的運(yùn)行時(shí)事件報(bào)告錯(cuò)誤 引發(fā)異常 報(bào)告錯(cuò)誤而不引發(fā)異常(如在長(zhǎng)時(shí)間運(yùn)行中的服務(wù)端進(jìn)程的錯(cuò)誤處理) logging.error(), logging.exception() 或 logging.critical()分別適用于特定的錯(cuò)誤及應(yīng)用領(lǐng)域

日志功能分別對(duì)各種事件和嚴(yán)重性都進(jìn)行分級(jí)。

名稱 何時(shí)使用 等級(jí) DEBUG 細(xì)節(jié)信息,僅當(dāng)診斷問(wèn)題時(shí)適用。 10 INFO 確認(rèn)程序按預(yù)期運(yùn)行 20 WARNING 表明有已經(jīng)或即將發(fā)生的意外(例如:磁盤(pán)空間不足)。程序仍按預(yù)期進(jìn)行 30 ERROR 由于嚴(yán)重的問(wèn)題,程序的某些功能已經(jīng)不能正常執(zhí)行 40 CRITICAL 嚴(yán)重的錯(cuò)誤,表明程序已不能繼續(xù)執(zhí)行 50

示例簡(jiǎn)單示例

因?yàn)槭莗ython自帶的所以無(wú)需安裝,默認(rèn)的級(jí)別是WARNING,所以下面只顯示一條warning信息。

import logginglogging.warning(’this is warning’)logging.info(’this is info’)

python 日志模塊logging的使用場(chǎng)景及示例

更改級(jí)別

我們將默認(rèn)的級(jí)別改成最低級(jí)別,則會(huì)打印同級(jí)別以及高級(jí)別的日志信息

import logging logging.basicConfig(level=logging.DEBUG)logging.debug(’this is debug’)logging.info(’this is info’)logging.warning(’this is warning’)logging.error(’this is error’)

python 日志模塊logging的使用場(chǎng)景及示例

保存日志

只是打印到控制臺(tái)對(duì)于少量信息倒是可控,但是信息量大的時(shí)候就不方便查找了。那么我們需要將其保存到文件中。

import logging logging.basicConfig(level=logging.DEBUG,filename=’log.log’,format=’%(asctime)s - %(lineno)s - %(levelname)s - %(message)s’)logger = logging.getLogger(__name__)logger.debug(’this is debug’)logger.info(’this is info’)logger.warning(’this is warning’)logger.error(’this is error’)

python 日志模塊logging的使用場(chǎng)景及示例

上面我們?cè)诒4娴臅r(shí)候,同時(shí)還添加了其他描述信息,比如執(zhí)行時(shí)間,執(zhí)行代碼行數(shù),日志級(jí)別,打印消息。當(dāng)然方法遠(yuǎn)不止這些,具體請(qǐng)看下表

屬性名稱 格式 描述 ARGS 你不需要自己設(shè)置格式。 參數(shù)元組被合并到msg中以產(chǎn)生消息,或者其值被用于合并的詞典(當(dāng)只有一個(gè)參數(shù)時(shí),它是一個(gè)字典)。 asctime %(asctime)類 創(chuàng)建時(shí)的可讀時(shí)間。默認(rèn)情況下,這是’2003-07-08 16:49:45,896’的格式(逗號(hào)之后的數(shù)字是毫秒部分)。 created %(created)的F 創(chuàng)建的時(shí)間(由time.time()返回)。 exc_info 你不需要自己設(shè)置格式。 異常元組(àla sys.exc_info)或,如果沒(méi)有發(fā)生異常,則為無(wú)。 filename %(filename)類 路徑名的文件名部分。 funcName %(funcName)類 包含日志記錄調(diào)用的函數(shù)的名稱。 levelname %(levelname)■ 文本消息級(jí)別(’DEBUG’,’INFO’,’WARNING’,’ERROR’,’CRITICAL’)。 levelno %(levelno)s 消息的數(shù)字記錄級(jí)別(DEBUG,INFO,WARNING,ERROR,CRITICAL)。 lineno %(lineno)d 發(fā)出日志記錄調(diào)用的源行號(hào)。 module %(module)類 模塊(文件名稱部分)。 msecs %(msecs)d 創(chuàng)建時(shí)的毫秒部分。 message %(message)類 記錄的消息,計(jì)算為msg%args。這是在調(diào)用Formatter.format()時(shí)設(shè)置的。 msg 你不需要自己設(shè)置格式。 在原始日志記錄調(diào)用中傳遞的格式字符串。與args合并生成消息或任意對(duì)象(請(qǐng)參閱使用任意對(duì)象作為消息)。 name %(name)類 用于記錄呼叫的記錄器的名稱。 pathname %(filename)類 發(fā)出日志記錄調(diào)用的源文件的完整路徑名。 process %(process)d 進(jìn)程ID。 processName %(processName)類 進(jìn)程名稱。 relativeCreated %(relativeCreated)d 相對(duì)于加載日志記錄模塊的時(shí)間,LogRecord創(chuàng)建時(shí)的時(shí)間(以毫秒為單位)。 thread %(thread)d 線程ID。 threadName %(threadName)類 線程名稱。

日志輸出進(jìn)階

首先了解以下進(jìn)階的方法的說(shuō)明:

StreamHandler 類位于核心 logging 包,它可將日志記錄輸出發(fā)送到數(shù)據(jù)流例如 sys.stdout, sys.stderr 或任何文件類對(duì)象(或者更精確地說(shuō),任何支持 write() 和 flush() 方法的對(duì)象

FileHandler 類位于核心 logging 包,它可將日志記錄輸出到磁盤(pán)文件中。 它從 StreamHandler 繼承了輸出功能。

我們需要通過(guò)調(diào)用 Logger 類(以下稱為 loggers , 記錄器)的實(shí)例來(lái)執(zhí)行日志記錄。

Logger 對(duì)象有三個(gè)常見(jiàn)的方法:

Logger.setLevel() 指定記錄器將處理的最低嚴(yán)重性日志消息,其中 debug 是最低內(nèi)置嚴(yán)重性級(jí)別, critical 是最高內(nèi)置嚴(yán)重性級(jí)別。 例如,如果嚴(yán)重性級(jí)別為 INFO ,則記錄器將僅處理 INFO 、 WARNING 、 ERROR 和 CRITICAL 消息,并將忽略 DEBUG 消息。 Logger.addHandler() 和 Logger.removeHandler() 從記錄器對(duì)象中添加和刪除處理程序?qū)ο蟆L幚沓绦蛟谝韵聝?nèi)容中有更詳細(xì)的介紹 處理程序 。 Logger.addFilter() 和 Logger.removeFilter() 可以添加或移除記錄器對(duì)象中的過(guò)濾器。 Filter 對(duì)象 包含更多的過(guò)濾器細(xì)節(jié)。

下面示例采用添加日志記錄器對(duì)象輸出和上面一樣在控制臺(tái)打印

import logging logger = logging.getLogger(__name__)logger.setLevel(level=logging.INFO)handler = logging.StreamHandler()formatter = logging.Formatter(’%(asctime)s - %(lineno)s - %(levelname)s - %(message)s’)handler.setFormatter(formatter)logger.addHandler(handler) logger.info(’This is a log info’)logger.debug(’Debugging’)logger.warning(’Warning exists’)logger.info(’Finish’)

python 日志模塊logging的使用場(chǎng)景及示例

當(dāng)然也同樣能保存到文件,為了演示修改了文件名稱為put.log

import logging logger = logging.getLogger(__name__)logger.setLevel(level=logging.INFO)handler = logging.FileHandler(’put.log’)formatter = logging.Formatter(’%(asctime)s - %(lineno)s - %(levelname)s - %(message)s’)handler.setFormatter(formatter)logger.addHandler(handler) logger.info(’This is a log info’)logger.debug(’Debugging’)logger.warning(’Warning exists’)logger.info(’Finish’)

python 日志模塊logging的使用場(chǎng)景及示例

日志雙向輸出

import logginglogger = logging.getLogger(__name__)logger.setLevel(level=logging.INFO)handler1 = logging.FileHandler(’output.log’)handler2 = logging.StreamHandler()formatter = logging.Formatter(’%(asctime)s - %(lineno)s - %(levelname)s - %(message)s’)handler1.setFormatter(formatter)handler2.setFormatter(formatter)logger.addHandler(handler1)logger.addHandler(handler2)logger.info(’This is a log info’)logger.debug(’Debugging’)logger.warning(’Warning exists’)logger.info(’Finish’)

python 日志模塊logging的使用場(chǎng)景及示例

python 日志模塊logging的使用場(chǎng)景及示例

以上就是python 日志模塊logging的使用場(chǎng)景及示例的詳細(xì)內(nèi)容,更多關(guān)于python 日志模塊logging的使用的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 国产精品无码久久久久 | 久久福利青草精品资源站 | 国产成人精品一区二三区在线观看 | 成人中文字幕在线观看 | 在线天堂视频 | 香蕉网影院在线观看免费 | 久草新视频 | 亚洲国产成人久久综合野外 | 做爰成人五级在线视频| 仑乱高清在线一级播放 | 国产人成午夜免视频网站 | 嫩草一区二区三区四区乱码 | 欧美另类69xxxxx 视频 | 国产韩国精品一区二区三区久久 | 久久精品成人一区二区三区 | 手机看片国产免费永久 | 亚洲一区二区在线成人 | 成人在线视频免费观看 | 久久91精品国产91久久户 | 午夜性刺激免费视频 | 99久久久国产精品免费播放器 | 国产成人ay手机在线观看 | 久久精品系列 | 亚洲国产精品久久人人爱 | 成人小视频在线观看免费 | 神马我我不卡伦影视 | 日本免费人成在线网站 | 国产99视频精品免费视频7 | 波多野结衣在线观看高清免费资源 | 日韩一品在线播放视频一品免费 | 我想看三级特黄 | 欧美精品v欧洲精品 | 国产成人18黄网站免费网站 | a免费网站 | 一本久久道久久爱 | 精品日本一区二区三区在线观看 | 日韩久久久精品首页 | 美女视频黄a视频美女大全 美女视频黄a视频免费全程 | 国产成人精品久久二区二区 | 老司机精品福利视频 | 亚洲天堂最新网址 |