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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python日志_python日志处理

發(fā)布時間:2024/8/1 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python日志_python日志处理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、日志概念

日志是一種可以追蹤某些軟件運行時所發(fā)生事件的方法。 軟件開發(fā)人員可以向他們的代碼中

調(diào)用日志記錄相關(guān)的方法來表明發(fā)生了某些事情。 一個事件可以用一個可包含可選變量數(shù)據(jù)

的消息來描述。 此外,事件也有重要性的概念,這個重要性也可以被稱為嚴重性級別(level)。

Python自身也提供了一個用于記錄日志的標準庫模塊--logging。 logging模塊定義的函數(shù)和

類為應用程序和庫的開發(fā)實現(xiàn)了一個靈活的事件日志系統(tǒng),由標準庫模塊提供日志記錄API,

關(guān)鍵好處是所有Python模塊都可以使用這個日志記錄功能。 所以,你的應用日志可以將你自

己的日志信息與來自第三方模塊的信息整合起來。

總之,日志的作用就是:

調(diào)試軟件程序

了解軟件程序運行情況,確定軟件運行是否運行正常

軟件程序故障分析與定位

二、logging模塊

1、logging日志級別

日志級別

數(shù)值

使用范圍

CRITICAL

50

特別糟糕的事情,如內(nèi)存耗盡,磁盤空間為空,一般很少使用

ERROR

40

發(fā)生錯誤時,如IO操作失敗或者連接問題

WARNING

30

發(fā)生很重要的事情,但并不是錯誤,是警告信息

INFO

20

處理請求或者狀態(tài)變化等日常事務(wù)

DEBUG

10

調(diào)試過程中使用DEBUG等級,如算法中每個循環(huán)的中間狀態(tài)

NOTSET

0

很少使用

內(nèi)建等級中,級別最低的是DEBUG,級別最高的是CRITICAL。例如setLevel(logging.INFO),此時函數(shù)參數(shù)為INFO,那么該logger將只會處理INFO、WARNING、ERROR和CRITICAL級別的日志,而DEBUG級別的消息將會被忽略/丟棄。

2、logging日志系統(tǒng)的四大組件

在實際操作中,一般是先創(chuàng)建日志記錄器(logging.getLogger),然后再設(shè)置日志級別(logger.setLevel),接著再創(chuàng)建日志文件,也就是日志保存的地方(logging.FileHandler),然后再設(shè)置日志格式(logging.Formatter),最后再將日志處理程序記錄到記錄器(addHandler)

組件名稱

類名

功能簡介

日志器

Logger

可供程序直接調(diào)用的接口,app通過調(diào)用提供的api來記錄日志

處理器

Handler

決定將日志記錄分配至正確的目的地

過濾器

Filter

對日志信息進行過濾,提供更細粒度的日志來判斷輸出哪條日志記錄

格式器

Formatter

決定日志記錄的最終輸出格式

日志器(loggers)是入口,真正工作的是處理器(handler),處理器(handler)還可以通過過濾器(filter)和格式器(formatter)對要輸出的日志內(nèi)容做過濾和格式化等處理操作。

Logger類:配置方法和消息發(fā)送方法

配置方法

方法

功能描述

Logger.setLevel()

設(shè)置記錄器將會處理的最低嚴重級別的日志

Logger.addHandler()

為Logger對象添加一個handler對象

Logger.removeHandler()

為Logger對象移除一個handler對象

Logger.addFilter()

為Logger對象添加一個filter對象

Logger.removeFilter()

為Logger對象移除一個filter對象

消息發(fā)送方法

方法

功能描述

Logger.debug(),Logger.info(),Logger.warning(),Logger.error(),Logger.critical(),

創(chuàng)建一個與其方法名對應等級的日志記錄

Logger.exception()

創(chuàng)建一個類似與Logger.error()的日志記錄

Logger.log()

需要獲取一個明確的日志level參數(shù)來創(chuàng)建一個日志記錄

Handler類:常用配置方法

方法

功能描述

Handler.setLevel()

設(shè)置Handler將會處理的最低嚴重級別的日志

Handler.setFormatter()

為Handler設(shè)置一個格式器對象

Handler.addFilter()

為Handler添加一個過濾器對象

Handler.removeFilter()

為Handler移除一個過濾器對象

需要說明的是,應用程序代碼不應該直接實例化和使用Handler實例。因為Handler是一個基類,它只定義了素有handlers都應該有的接口,同時提供了一些子類可以直接使用或覆蓋的默認行為。下面是一些常用的Handler

Handler

功能描述

logging.FileHandler

將日志消息發(fā)送到磁盤文件,默認情況下文件大小會無限

logging.StreamHandler

將消息發(fā)送到輸出到Stream,如std.out,std.err任 file-like對象,也就是顯示在調(diào)試終端

logging.handlers.Rotating.FileHandler

將日志消息發(fā)送到磁盤文件,并支持日志文件按大小切割

logging.handlers.TimedRotatingFileHandler

將日志消息發(fā)送到磁盤文件,并支持日志文件按時間切割

logging.handlers.HTTPHandler

將日志消息以GET或POST的方式發(fā)送給一個HTTP服務(wù)器

logging.handlers.SMTPHandler

將日志消息發(fā)送給一個指定的email地址

logging.handlers.NullHandler

該Handler實例會忽略error messages,通常被想使用logging的library開發(fā)者使用來避免'No handlers could be found for logger XXX'信息的出現(xiàn).

Filter類:可以被Handler和Logger用來做比level更細粒度的、更復雜的過濾功能。

Filter是一個過濾器基類,它只允許某個logger層級下的日志事件通過過濾。

Formater類:用于配置日志信息的最終順序、結(jié)構(gòu)和內(nèi)容

Formater對象與logging.Handler基類不同的是,應用代碼可以直接實例化Formatter類。另外,如果你的應用程序需要一些特殊的處理行為,也可以實現(xiàn)一個Formatter的子類來完成。

格式

說明

%(levelno)s

打印日志級別的數(shù)值

%(levelname)s

打印日志級別的名稱

%(pathname)s

打印當前執(zhí)行程序的路徑,其實就是sys.argv[0]

%(filename)s

打印當前執(zhí)行程序名

%(funcName)s

打印日志的當前函數(shù)

%(lineno)d

打印日志的當前行號

%(asctime)s

打印日志的時間

%(thread)d

打印線程ID

%(threadName)s

打印線程名稱

%(process)d

打印進程ID

%(message)s

打印日志信息

3、示例

import logging

#創(chuàng)建日志級別

logger = logging.getLogger(__name__)

logger.setLevel(logging.INFO)

#創(chuàng)建日志文件

handler_info = logging.FileHandler('info_log.txt')

handler_info.setLevel(logging.INFO)

handler_warn = logging.FileHandler('warning_log.txt')

handler_warn.setLevel(logging.WARNING)

#定義日志格式

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

handler_info.setFormatter(formatter)

handler_warn.setFormatter(formatter)

#添加到日志記錄器中

logger.addHandler(handler_info)

logger.addHandler(handler_warn)

logger.info('information')

logger.warning('warning')

打開'warning_log.txt'文件,輸出:

2019-08-23 18:05:25,162 - __main__ - WARNING - warning

打開‘info_log.txt'文件,輸出:

2019-08-23 18:05:25,161 - __main__ - INFO - information

2019-08-23 18:05:25,162 - __main__ - WARNING - warning

總結(jié)

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

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