国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

Python內(nèi)置模塊logging用法實(shí)例分析

2020-01-04 15:51:15
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了Python內(nèi)置模塊logging用法。分享給大家供大家參考,具體如下:

1、將日志直接輸出到屏幕

import logginglogging.debug('This is debug message')logging.info('This is info message')logging.warning('This is warning message')# 默認(rèn)情況下,logging將日志打印到屏幕,日志級(jí)別為WARNING;#output====================================# WARNING:root:This is warning message

2.通過(guò)logging.basicConfig函數(shù)對(duì)日志的輸出格式及方式做相關(guān)配置

import logginglogging.basicConfig(level=logging.DEBUG,        format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',        datefmt='%a, %d %b %Y %H:%M:%S',        filename='myapp.log',        filemode='w')logging.debug('This is debug message')logging.info('This is info message')logging.warning('This is warning message')#./myapp.log文件中內(nèi)容為:#Sun, 24 May 2009 21:48:54 demo2.py[line:11] DEBUG This is debug message#Sun, 24 May 2009 21:48:54 demo2.py[line:12] INFO This is info message#Sun, 24 May 2009 21:48:54 demo2.py[line:13] WARNING This is warning message

logging.basicConfig參數(shù):

#logging.basicConfig函數(shù)各參數(shù):
filename: 指定日志文件名
filemode: 和file函數(shù)意義相同,指定日志文件的打開(kāi)模式,'w'或'a'
format: 指定輸出的格式和內(nèi)容,format可以輸出很多有用信息,如上例所示:
    %(levelno)s:     打印日志級(jí)別的數(shù)值
    %(levelname)s:     打印日志級(jí)別名稱
    %(pathname)s:     打印當(dāng)前執(zhí)行程序的路徑,其實(shí)就是sys.argv[0]
    %(filename)s:     打印當(dāng)前執(zhí)行程序名
    %(funcName)s:     打印日志的當(dāng)前函數(shù)
    %(lineno)d:     打印日志的當(dāng)前行號(hào)
    %(asctime)s:     打印日志的時(shí)間
    %(thread)d:     打印線程ID
    %(threadName)s: 打印線程名稱
    %(process)d:     打印進(jìn)程ID
    %(message)s:     打印日志信息
datefmt:     指定時(shí)間格式,同time.strftime()
level:         設(shè)置日志級(jí)別,默認(rèn)為logging.WARNING
stream:     指定將日志的輸出流,可以指定輸出到sys.stderr,sys.stdout或者文件,默認(rèn)輸出到sys.stderr,當(dāng)stream和filename同時(shí)指定時(shí),stream被忽略

3、將日志同時(shí)輸出到多個(gè)Handler

先定義一個(gè)住handler,并使用addHander()添加到主handler,實(shí)現(xiàn)日志輸出到多個(gè)handler.

a、同時(shí)輸出到文件和屏幕

import logging#設(shè)置一個(gè)basicConfig只能輸出到一個(gè)Handlerlogging.basicConfig(level=logging.DEBUG,        format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',        datefmt='%a, %d %b %Y %H:%M:%S',        filename='myapp.log',        filemode='w')#定義一個(gè)StreamHandler,將INFO級(jí)別或更高的日志信息打印到標(biāo)準(zhǔn)錯(cuò)誤,并將其添加到當(dāng)前的日志處理對(duì)象#console = logging.StreamHandler()console.setLevel(logging.INFO)formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')console.setFormatter(formatter)logging.getLogger('').addHandler(console)#輸出到文件的log級(jí)別為debug,輸出到stream的log級(jí)別為infologging.debug('This is debug message')logging.info('This is info message')logging.warning('This is warning message')

b、添加一個(gè)handler:輸出到文件,并根據(jù)文件大小滾動(dòng)存儲(chǔ)

在a的基礎(chǔ)上添加一個(gè)handler

from logging.handlers import RotatingFileHandler#定義一個(gè)RotatingFileHandler,最多備份5個(gè)日志文件,每個(gè)日志文件最大10MRthandler = RotatingFileHandler('myapp.log', maxBytes=10*1024*1024,backupCount=5)Rthandler.setLevel(logging.INFO)formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')Rthandler.setFormatter(formatter)logging.getLogger('').addHandler(Rthandler)

logging幾種Handler類型:

logging.StreamHandler(默認(rèn)):     日志輸出到流,可以是sys.stderr、sys.stdout或者文件
logging.FileHandler:             日志輸出到文件
logging.handlers.RotatingFileHandler    日志輸出到文件,基于文件大小滾動(dòng)存儲(chǔ)日志
logging.handlers.TimedRotatingFileHandler    日志輸出到文件,基于時(shí)間周期滾動(dòng)存儲(chǔ)日志
logging.handlers.SocketHandler:     遠(yuǎn)程輸出日志到TCP/IP sockets
logging.handlers.DatagramHandler:      遠(yuǎn)程輸出日志到UDP sockets
logging.handlers.SMTPHandler:          遠(yuǎn)程輸出日志到郵件地址
logging.handlers.SysLogHandler:     日志輸出到syslog
logging.handlers.NTEventLogHandler: 遠(yuǎn)程輸出日志到Windows NT/2000/XP的事件日志
logging.handlers.MemoryHandler:     日志輸出到內(nèi)存中的制定buffer
logging.handlers.HTTPHandler:         通過(guò)"GET"或"POST"遠(yuǎn)程輸出到HTTP服務(wù)器

4、通過(guò)配置文件配置logger

a、定義配置文件logger.conf

#logger.conf###############################################[loggers]keys=root,example01,example02[logger_root]level=DEBUGhandlers=hand01,hand02[logger_example01]handlers=hand01,hand02qualname=example01propagate=0[logger_example02]handlers=hand01,hand03qualname=example02propagate=0###############################################[handlers]keys=hand01,hand02,hand03[handler_hand01]class=StreamHandlerlevel=INFOformatter=form02args=(sys.stderr,)[handler_hand02]class=FileHandlerlevel=DEBUGformatter=form01args=('myapp.log', 'a')[handler_hand03]class=handlers.RotatingFileHandlerlevel=INFOformatter=form02args=('myapp.log', 'a', 10*1024*1024, 5)###############################################[formatters]keys=form01,form02[formatter_form01]format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)sdatefmt=%a, %d %b %Y %H:%M:%S[formatter_form02]format=%(name)-12s: %(levelname)-8s %(message)sdatefmt=

b、logging.config獲取配置

import loggingimport logging.configlogging.config.fileConfig("logger.conf")logger = logging.getLogger("example01")logger.debug('This is debug message')logger.info('This is info message')logger.warning('This is warning message')
import loggingimport logging.configlogging.config.fileConfig("logger.conf")logger = logging.getLogger("example02")logger.debug('This is debug message')logger.info('This is info message')logger.warning('This is warning message')

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到python教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 江口县| 前郭尔| 河南省| 玛纳斯县| 长海县| 中方县| 静海县| 平安县| 郓城县| 黄平县| 壶关县| 安丘市| 宜州市| 易门县| 称多县| 珠海市| 固始县| 福建省| 高邮市| 德保县| 错那县| 新建县| 靖州| 法库县| 台山市| 安龙县| 平遥县| 天长市| 新野县| 安仁县| 林周县| 都兰县| 怀化市| 信丰县| 平定县| 阿鲁科尔沁旗| 桑植县| 昭平县| 龙川县| 佛山市| 社旗县|