日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

Python logging模塊異步線程寫日志實(shí)現(xiàn)過(guò)程解析

瀏覽:196日期:2022-07-19 11:05:04

通過(guò)logging模塊,重寫一個(gè)logging2模塊,獨(dú)立開(kāi)啟線程,將待寫的日志信息異步放入隊(duì)列,做到日志輸出不影響主流程性能,環(huán)境python3.8

logging2.py

import osimport threadingimport queueimport timeimport datetimeimport loggingfrom logging.handlers import RotatingFileHandlerclass logging2(threading.Thread): AQueue = queue.Queue(100000) nPID = os.getpid() Adt = datetime.datetime.now().strftime(’%Y%m%d’) nCount = 1 def __init__(self, threadID, name, module, logLevel): threading.Thread.__init__(self) self.threadID = threadID self.name = name self.module = moduleprint('set loglevel: [%s]' % (logLevel) ) formatter = logging.Formatter(’%(asctime)s|%(name)s|%(process)d|%(levelname)s|%(message)s’) logfile = 'log_' + self.module + '_' + str(logging2.nPID) + '_' + str(logging2.Adt) + '.log' self.logger = logging.getLogger(__name__)self.rHandler = RotatingFileHandler(logfile, maxBytes = 10*1024*1024, backupCount = 10) self.rHandler.setFormatter(formatter)self.console = logging.StreamHandler() self.console.setFormatter(formatter)if logLevel == ’DEBUG’ : self.logger.setLevel(level = logging.DEBUG) self.rHandler.setLevel(logging.DEBUG) self.console.setLevel(logging.DEBUG) elif logLevel == ’INFO’ : self.logger.setLevel(level = logging.INFO) self.rHandler.setLevel(logging.INFO) self.console.setLevel(logging.INFO) elif logLevel == ’WARNING’ : self.logger.setLevel(level = logging.WARN) self.rHandler.setLevel(logging.WARN) self.console.setLevel(logging.WARN) elif logLevel == ’ERROR’ : self.logger.setLevel(level = logging.ERROR) self.rHandler.setLevel(logging.ERROR) self.console.setLevel(logging.ERROR)self.logger.addHandler(self.rHandler) self.logger.addHandler(self.console) #如果跨天了,則重新生成新的文件名 def reSetLog(self): AdtTemp = datetime.datetime.now().strftime(’%Y%m%d’) #比較新的時(shí)間 if AdtTemp == logging2.Adt: return(True) logging2.Adt = AdtTemp logfile = 'log_' + self.module + '_' + str(logging2.nPID) + '_' + str(AdtTemp) + '.log' self.rHandler = RotatingFileHandler(logfile, maxBytes = 1*1024, backupCount = 10)self.logger.addHandler(self.rHandler) self.logger.addHandler(self.console) logging2.nCount += 1 def run(self): print ('開(kāi)啟日志線程:' + self.name) i = 0 while True: #data = 'queue test data' #debug(data) #print('Queuesize: %s' % (logging2.AQueue.qsize())) self.reSetLog() if logging2.AQueue.empty() == False:#從隊(duì)列獲取日志消息data = logging2.AQueue.get()#解析日志消息,格式:日志級(jí)別,內(nèi)容level = list(data.keys())[0]content = data.get(level)#把內(nèi)容按分隔符|解析成list傳入?yún)?shù)lstContent = list(content.split(’|’))if level == ’DEBUG’ : self.logger.debug(*lstContent)elif level == ’INFO’ : self.logger.info(*lstContent)elif level == ’WARNING’ : self.logger.warn(*lstContent)elif level == ’ERROR’ : self.logger.error(*lstContent) else:time.sleep(0.5) print ('退出線程:' + self.name) def debug(*content): logMsg = '' #傳入多個(gè)參數(shù)用豎線分隔符分開(kāi) for i in range(len(content)): if i == len(content)-1: logMsg += content[i] else: logMsg += content[i]+'|' logging2.AQueue.put({’DEBUG’:logMsg}) def info(*content): logMsg = '' for i in range(len(content)): if i == len(content)-1: logMsg += content[i] else: logMsg += content[i]+'|' logging2.AQueue.put({’INFO’:logMsg})def warn(*content): logMsg = '' for i in range(len(content)): if i == len(content)-1: logMsg += content[i] else: logMsg += content[i]+'|' logging2.AQueue.put({’WARNING’:logMsg}) def error(*content): logMsg = '' for i in range(len(content)): if i == len(content)-1: logMsg += content[i] else: logMsg += content[i]+'|' logging2.AQueue.put({’ERROR’:logMsg}) def init(module, level): # 創(chuàng)建新線程 thread1 = logging2(1, 'Thread-log', module, level) # 開(kāi)啟新線程 thread1.start()# thread1.join()

測(cè)試樁logMain.py

import sysimport osimport timeimport threadingif __name__ == ’__main__’: import logging2 logging2.init('logMain', 'DEBUG') teststr = '22222' while True: logging2.debug(’this is a debug log test [%s] ’, teststr) logging2.info(’this is a info log test [%s] [%s]’, teststr, teststr) logging2.warn(’this is a warn log test’) logging2.error(’this is a error log test’) #time.sleep(0.1) print(threading.enumerate()) print(’press ctrl_c to exit’)

測(cè)試結(jié)果

生成日志文件:

-rw-rw-r--. 1 zxl zxl 10152463 6月 24 17:52 log_logMain_57554_20200624.log

文件內(nèi)容如下:

Python logging模塊異步線程寫日志實(shí)現(xiàn)過(guò)程解析

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产一区二区三区四区二区| 精品国内亚洲2022精品成人 | 欧美午夜不卡| 欧美1级日本1级| 亚洲欧洲午夜| 免费人成黄页网站在线一区二区| 欧美专区18| 少妇精品久久久| 国产美女视频一区二区| 日本视频中文字幕一区二区三区| 欧美午夜三级| 精品久久精品| 久久高清免费| 久久av一区| 日韩国产欧美三级| 免费看久久久| 日韩精品久久久久久久电影99爱| 欧美日韩视频一区二区三区| 亚洲在线成人| 日本99精品| 九九久久国产| 亚洲福利专区| 亚洲精品一级| 久久精品系列| 午夜精品成人av| 午夜久久福利| 日韩国产一区二| 91免费精品| 日韩视频在线一区二区三区 | 亚洲一区导航| 国产美女亚洲精品7777| 精品99在线| 亚洲欧美日韩高清在线| 日韩二区三区在线观看| av在线最新| 伊人久久亚洲热| 日韩av中文在线观看| 丁香六月综合| 亚洲天堂日韩在线| 精品一区二区三区亚洲| 黑丝美女一区二区| 日韩成人一级| 亚洲四虎影院| 日本a级不卡| 日韩一区亚洲二区| 亚洲九九精品| 热三久草你在线| 伊人国产精品| 老牛影视精品| 亚洲ab电影| 国产一区三区在线播放| 怡红院精品视频在线观看极品| 欧美一级二级视频| 日韩欧美少妇| 日韩成人精品一区二区三区| 日韩精品专区| 日本精品一区二区三区在线观看视频| 都市激情国产精品| 婷婷综合国产| 宅男在线一区| 中文字幕一区二区三区在线视频| 亚洲免费网址| 毛片在线网站| 亚洲精品伊人| 91亚洲国产高清| 99精品视频在线| 亚洲精品成a人ⅴ香蕉片| 日本视频一区二区| 中文精品电影| 97国产精品| 日本在线成人| 久久九九99| 国产一区二区三区天码| 国产精品男女| 亚洲欧美日韩国产| 成人在线观看免费视频| 少妇精品久久久一区二区| 91久久视频| 欧美日韩国产亚洲一区| 久久av免费看| 国产精品嫩草99av在线| 国产精品久久久久久久久久10秀| 欧美亚洲一级| 黄色成人精品网站| 日韩av不卡一区二区| 日韩亚洲精品在线观看| 久久亚洲视频| 欧美三区不卡| 日本不卡视频在线| 国产资源在线观看入口av| 激情久久久久久| 高潮一区二区| 牛牛精品成人免费视频| 国产精品一区二区99| 国产手机视频一区二区| 国产高清一区二区| 91亚洲国产高清| 国内精品伊人| 91精品国产福利在线观看麻豆| 蜜臀久久久99精品久久久久久| 精品伊人久久| 久久男人天堂| 国产精品88久久久久久| 日韩在线网址| 成人高清一区| 老司机免费视频一区二区| 久久精品影视| 久久精品欧洲| 国产视频一区二| 一区二区三区四区日韩| 999久久久亚洲| 日韩av福利| 色在线中文字幕| 黑森林国产精品av| 成人片免费看| 中文字幕在线免费观看视频| 国产一区二区三区亚洲综合| 国产精品jk白丝蜜臀av小说| 日本视频在线一区| 91成人小视频| 欧美一区免费| 欧美日韩夜夜| 久久国产日韩欧美精品| 青草久久视频| 国产伦精品一区二区三区在线播放| 最新亚洲国产| 日本亚洲视频在线| 日韩av二区在线播放| 欧美亚洲专区| 国产精品xxx| 日韩综合一区| 日韩精品诱惑一区?区三区| 亚洲成人av观看| 亚洲成人一区| 一区二区精彩视频| 久久国产精品免费精品3p| 欧美a一区二区| 亚洲国产欧美日本视频| 国产中文一区| 奶水喷射视频一区| 亚洲综合不卡| 综合视频一区| 久久不见久久见免费视频7| 精品国产亚洲一区二区在线观看| 成人在线免费观看91| 日韩在线短视频| 国户精品久久久久久久久久久不卡| 天堂网av成人| 丝袜美腿亚洲色图| 日韩福利视频网| 牛牛精品成人免费视频| 麻豆网站免费在线观看| 久久久久午夜电影| 久久国产88| 欧美日韩91| 韩国一区二区三区视频| 国产99久久| 亚洲毛片在线| 国产中文欧美日韩在线| 精品在线99| 97精品国产99久久久久久免费| 精品视频在线观看网站| 亚洲特色特黄| 亚洲精品乱码久久久久久蜜桃麻豆| 国产麻豆精品| 99久久精品国产亚洲精品| 蜜臀国产一区二区三区在线播放| 国产精品一区亚洲| 久久久久久久久丰满| 亚洲精品免费观看| 久久一区精品| 久久一区二区三区喷水| 日本vs亚洲vs韩国一区三区二区| 国产一区二区三区不卡av| 最新日韩av| 老司机精品视频在线播放| 黄色成人91| 久久精品资源| 91久久中文| 久久av免费看| 国产美女精品| 精品久久中文| 久久国产99| 久久影院午夜精品| 亚洲精品韩国| 免费一二一二在线视频| 亚洲深深色噜噜狠狠爱网站 | 麻豆精品视频在线观看视频| 91精品国产调教在线观看| 日韩精品一区二区三区av| 久久男人av资源站| 日本一区中文字幕| 久久精选视频| 久久精品一本| 蜜桃av一区二区在线观看| 国产黄大片在线观看| 日韩中文字幕| 亚洲手机在线| 国产九一精品| 亚洲免费婷婷|