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

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

Python logging自定義字段輸出及打印顏色

瀏覽:24日期:2022-07-03 16:38:19

logging模塊是Python的一個標準庫模塊,開發(fā)過程中,可以通過該模塊,靈活的完成日志的記錄。

logging模塊提供了兩種記錄日志的方式:

1)使用logging提供的模塊級別的函數(shù)(logging.basicConfig,logging.debug,logging.info...)

2)使用logging模塊的組件(loggers,handlers,filters,formatters)

簡單示例

import jsonimport loggingclass JsonFilter(logging.Filter): #此處定義字段的默認值,如果打印信息時不設置對應字段,則為默認值 #服務服務名或者服務主機 server = '' #訪問ip ip = '' #訪問資源路徑 sourceurl = '' #訪問方式 method = '' # 訪問設備 devices = '' # 訪問協(xié)議 Protocols = '' #訪問結(jié)果的HTTP狀態(tài)碼 result_Httpstatus = '' #訪問結(jié)果的狀態(tài)碼 result_status = '' #訪問結(jié)果的msg信息 result_msg = '' #訪問結(jié)果的數(shù)據(jù)大小 result_msgsize = '' def filter(self, record): record.server = self.server record.ip = self.ip record.sourceurl = self.sourceurl record.method = self.method record.devices = self.devices record.Protocols = self.Protocols record.result_Httpstatus = self.result_Httpstatus record.result_status = self.result_status record.result_msg = self.result_msg record.result_msgsize = self.result_msgsize return Trueif __name__ == ’__main__’: formate = json.dumps({ 'time': '%(asctime)s', 'levelname': '%(levelname)s', 'server': '%(server)s', 'ip': '%(ip)s', 'sourceurl': '%(sourceurl)s', 'method': '%(method)s', 'devices': '%(devices)s', 'Protocols': '%(Protocols)s', 'result_Httpstatus': '%(result_Httpstatus)s', 'result_status': '%(result_status)s', 'result_msg': '%(result_msg)s', 'result_msgsize': '%(result_msgsize)s', }) logging.basicConfig(level=logging.DEBUG,format=formate) logger = logging.getLogger() filter_ = JsonFilter() logger.addFilter(filter_) filter_.server = ’127.0.0.1:8100’ filter_.ip = ’127.0.0.1’ filter_.sourceurl = ’http://127.0.0.1:8100/test’ filter_.method = ’Get’ filter_.devices = ’Chrome’ filter_.Protocols = ’HTTP’ filter_.result_Httpstatus = ’200’ filter_.result_status = ’1001’ filter_.result_msg = ’增加成功’ filter_.result_msgsize = ’4296’ logger.info('') #如果你需要在打印字段中設置

一個完整的例子

import loggingimport osfrom logging import handlersclass JsonFilter(logging.Filter): # 此處定義字段的默認值,如果打印信息時不設置對應字段,則為默認值 # 服務服務名或者服務主機 server = '' # 訪問ip ip = '' # 訪問資源路徑 sourceurl = '' # 訪問方式 method = '' # 訪問設備 devices = '' # 訪問協(xié)議 Protocols = '' # 訪問結(jié)果的HTTP狀態(tài)碼 result_Httpstatus = '' # 訪問結(jié)果的狀態(tài)碼 result_status = '' # 訪問結(jié)果的msg信息 result_msg = '' # 訪問結(jié)果的數(shù)據(jù)大小 result_msgsize = '' def filter(self, record): record.server = self.server record.ip = self.ip record.sourceurl = self.sourceurl record.method = self.method record.devices = self.devices record.Protocols = self.Protocols record.result_Httpstatus = self.result_Httpstatus record.result_status = self.result_status record.result_msg = self.result_msg record.result_msgsize = self.result_msgsize return Trueclass CommonLog(object): ''' 日志記錄 ''' def __init__(self, logger, logname=’Access_log’): self.logname = os.path.join('D:python protestprotest', ’%s’ % logname) self.logger = logger self.logger.setLevel(logging.INFO) self.logger.propagate = False self.filter_ = JsonFilter() self.logger.addFilter(self.filter_) self.formatter = logging.Formatter('time:%(asctime)s - levelname:%(levelname)s - server:%(server)s - ip:%(ip)s - sourceurl:%(sourceurl)s - method:%(method)s - devices:%(devices)s - Protocols:%(Protocols)s - result_Httpstatus:%(result_Httpstatus)s - result_status:%(result_status)s - result_msg:%(result_msg)s - result_msgsize:%(result_msgsize)s ') def console(self, level, message): # 創(chuàng)建一個FileHandler,用于寫到本地 fh = logging.handlers.TimedRotatingFileHandler(self.logname, when=’MIDNIGHT’, interval=1, encoding=’utf-8’) fh.suffix = ’%Y-%m-%d.log’ fh.setLevel(logging.INFO) fh.setFormatter(self.formatter) self.logger.addHandler(fh) # 創(chuàng)建一個StreamHandler,用于輸出到控制臺 ch = logging.StreamHandler() ch.setLevel(logging.INFO) ch.setFormatter(self.formatter) self.logger.addHandler(ch) if level == ’info’: self.logger.info(message) elif level == ’debug’: self.logger.debug(message) elif level == ’warning’: self.logger.warning(message) elif level == ’error’: self.logger.error(message) # 這兩行代碼是為了避免日志輸出重復問題 self.logger.removeHandler(ch) self.logger.removeHandler(fh) # 關(guān)閉打開的文件 fh.close() def debug(self, message): self.console(’debug’, message) def info(self, message): self.console(’info’, message) def warning(self, message): self.console(’warning’, message) def error(self, message): self.console(’error’, message)if __name__ == ’__main__’: logger = logging.getLogger() log = CommonLog(logger) log.filter_.server = ’127.0.0.1:8100’ log.filter_.ip = ’127.0.0.1’ log.filter_.sourceurl = ’http://127.0.0.1:8100/test’ log.filter_.method = ’Get’ log.filter_.devices = ’Chrome’ log.filter_.Protocols = ’HTTP’ log.filter_.result_Httpstatus = ’200’ log.filter_.result_status = ’1001’ log.filter_.result_msg = ’增加成功’ log.filter_.result_msgsize = ’4296’ log.info('')

設置日志打印顏色

# coding:utf-8import loggingimport osfrom logging.handlers import RotatingFileHandler # import colorlog # 控制臺日志輸入顏色log_colors_config = { ’DEBUG’: ’cyan’, ’INFO’: ’green’, ’WARNING’: ’yellow’, ’ERROR’: ’red’, ’CRITICAL’: ’red’,}class Log: def __init__(self, logname=’Access_log’): self.logname = os.path.join('D:python_protestprotest', ’%s’ % logname) self.logger = logging.getLogger() self.logger.setLevel(logging.DEBUG) self.formatter = colorlog.ColoredFormatter( ’%(log_color)s[%(asctime)s] [%(filename)s:%(lineno)d] [%(module)s:%(funcName)s] [%(levelname)s]- %(message)s’, log_colors=log_colors_config) # 日志輸出格式 def console(self, level, message): # 創(chuàng)建一個FileHandler,用于寫到本地 fh = logging.handlers.TimedRotatingFileHandler(self.logname, when=’MIDNIGHT’, interval=1, encoding=’utf-8’) fh.setLevel(logging.DEBUG) fh.setFormatter(self.formatter) self.logger.addHandler(fh) # 創(chuàng)建一個StreamHandler,用于輸出到控制臺 ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) ch.setFormatter(self.formatter) self.logger.addHandler(ch) if level == ’info’: self.logger.info(message) elif level == ’debug’: self.logger.debug(message) elif level == ’warning’: self.logger.warning(message) elif level == ’error’: self.logger.error(message) # 這兩行代碼是為了避免日志輸出重復問題 self.logger.removeHandler(ch) self.logger.removeHandler(fh) fh.close() # 關(guān)閉打開的文件 def debug(self, message): self.console(’debug’, message) def info(self, message): self.console(’info’, message) def warning(self, message): self.console(’warning’, message) def error(self, message): self.console(’error’, message)if __name__ == '__main__': log = Log() log.info('測試1') # 如果你需要在打印字段中設置 log.debug('測試2') # 如果你需要在打印字段中設置

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品a级| 欧美xxxx中国| 91国语精品自产拍| 蜜臀av免费一区二区三区| 电影91久久久| 成人精品中文字幕| 国产专区一区| 男女性色大片免费观看一区二区| 亚洲最新av| 国产精品久久久久久妇女| 久久香蕉网站| 成人久久一区| 亚洲三级精品| 亚洲三级网址| 久久av电影| 久久久国产精品一区二区中文| 婷婷激情久久| 亚洲最新av| 久久av电影| 亚洲国内精品| 亚欧成人精品| 成人国产精品一区二区网站| 婷婷久久一区| 青青国产精品| 国产 日韩 欧美一区| 久久福利精品| 久久精品国产999大香线蕉 | 综合国产精品| 韩日一区二区| 久久国产精品亚洲77777| 国产亚洲电影| 国产一区观看| 国产精品手机在线播放| 久久青草久久| 清纯唯美亚洲综合一区| 亚洲成人av观看| 亚洲免费资源| 中文字幕色婷婷在线视频| 蜜桃av一区二区三区电影| 国产一区二区视频在线看| 久久亚洲色图| 久久精品理论片| 中文亚洲欧美| 日韩电影在线视频| 欧美一级二区| 香蕉成人久久| 日韩大片在线| 国产激情久久| 丝袜脚交一区二区| 日韩国产在线| 国产精品一区二区av交换| 亚洲欧美日韩专区| 日本在线高清| 免费在线观看一区| 亚洲一区二区成人| 亚洲va中文在线播放免费| 欧美天堂在线| 欧美精选一区二区三区| 国产精品久久亚洲不卡| 日韩制服丝袜先锋影音| 蜜桃av.网站在线观看| 国产探花在线精品| 久久av在线| 欧美a级一区| 精品国产乱码| 国产剧情在线观看一区| 亚洲精品亚洲人成在线观看| 日韩一级不卡| 999精品在线| 在线手机中文字幕| 久久伊人久久| 国产精品欧美大片| 亚洲精品护士| 国产精品日本| 欧美在线资源| 亚洲二区免费| 久久精品亚洲人成影院| 国产精品久久观看| 精品91福利视频| 国产精品17p| 国产日本久久| 国产精品亚洲产品| 欧美一区二区三区免费看| 亚洲精品动态| 日韩不卡一区二区三区| 一区二区三区四区精品视频| 美女被久久久| 巨乳诱惑日韩免费av| 在线亚洲免费| 美女日韩在线中文字幕| 一区二区亚洲视频| 亚洲97av| 国产精品v日韩精品v欧美精品网站 | 亚洲激精日韩激精欧美精品| 欧美成人基地| 国产精品成人一区二区不卡| 美女性感视频久久| 精品黄色一级片| 精品成av人一区二区三区| 美女久久久久久 | 免播放器亚洲| 男女男精品视频网| 亚洲精品女人| 日韩精品亚洲aⅴ在线影院| 五月亚洲婷婷| 国产精品日本一区二区三区在线 | 日韩福利视频导航| 国产精品久久久久久av公交车| 久久爱www成人| 日韩1区2区| 国产99精品| 久久不射网站| 国产图片一区| 精品国产18久久久久久二百| 成人国产精品一区二区网站| 伊人久久在线| 亚洲精品一区二区在线看| 视频一区二区三区入口| 日韩激情综合| 国产一区福利| 99免费精品| 国产一区观看| 一本综合精品| 你懂的国产精品永久在线| 日韩av有码| 亚洲视频播放| 国产三级精品三级在线观看国产| 成人国产精品一区二区免费麻豆| 亚洲大片在线| 午夜久久av| 国产精品黑丝在线播放| 欧美日韩国产精品一区二区亚洲| 四虎精品永久免费| 岛国精品一区| 在线国产精品一区| 国产精品免费不| 日韩不卡在线| 日本成人中文字幕在线视频| 91综合网人人| 天堂精品久久久久| 国产精品久久久久av电视剧| 亚洲精品乱码久久久久久蜜桃麻豆| 精品中文字幕一区二区三区| 欧美丝袜一区| 国产精品久久久久久av公交车| 蜜桃国内精品久久久久软件9| 婷婷视频一区二区三区| 色黄视频在线观看| 亚洲精品福利| 久久精品99久久无色码中文字幕| 蜜桃一区二区三区在线观看| 国产在视频一区二区三区吞精| 亚洲免费中文| 中文一区一区三区高中清不卡免费| 中文一区一区三区免费在线观| 成人亚洲一区| 欧美日韩xxxx| 欧美日韩日本国产亚洲在线| 欧美aaaaaa午夜精品| 视频一区欧美精品| 成人美女视频| 国产精品久久久免费| 日韩午夜精品| 日韩不卡视频在线观看| 欧美精品1区| 夜久久久久久| 9999国产精品| 国产精品久久久一区二区| 蜜桃av一区二区三区电影| 久久久久99| 福利一区视频| 国产欧美日韩在线观看视频| 鲁大师成人一区二区三区| 日韩av首页| 好看的亚洲午夜视频在线| 91综合视频| 久久91视频| 日韩精品免费视频人成| 日韩专区在线视频| 欧美天堂亚洲电影院在线观看| 国内精品美女在线观看| 日韩av网站免费在线| 麻豆91精品| 在线亚洲观看| 蜜臀91精品国产高清在线观看| 鲁鲁在线中文| 国产一区二区三区四区五区传媒| 国产午夜精品一区在线观看| 丝袜美腿亚洲色图| 图片区亚洲欧美小说区| 三上悠亚国产精品一区二区三区| 欧美激情 亚洲a∨综合| 久久狠狠亚洲综合| 日韩极品在线观看| 亚洲tv在线| 亚洲精品无播放器在线播放| 欧美色图一区| 亚洲网站视频| 亚洲欧美一区在线| 激情综合自拍|