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

首頁 > 編程 > Python > 正文

Python實現(xiàn)Logger打印功能的方法詳解

2020-02-16 10:09:48
字體:
供稿:網(wǎng)友

前言

眾所周知在Python中有專門用于logger打印的套件叫l(wèi)ogging,但是該套件logger僅接收一個字符串類型的logger打印信息。因此,我們在使用是需要先提前將要打印的信息拼接成一個字符串之后才行,這樣對于代碼的整潔性并不好。

我在logging的基礎(chǔ)上實現(xiàn)了一個類似于Java的logback的logger打印工具,實現(xiàn)比較簡單,能夠應(yīng)對一些簡單的logger打印需求,希望對大家能有幫助。下面話不多說了,來一起看看詳細(xì)的介紹:

LoggerFactory

該類用作生成其他調(diào)用類的logger實例,并保存這些實例。

'''Created on 2017年7月20日Logger工廠,保存每個類的Logger實例'''from slient.bigdata.common.logger import Loggerimport loggingclass LoggerFactory : LOG_FILENAME='bigdata_python.log' #logger保存文件 TYPE = "CONSOLE"     #logger打印類型 #TYPE = "FILE" LEVEL = logging.DEBUG    #logger級別 #LEVEL = logging.INFO loggerDict = {} #對外部開放的Logger調(diào)用方法 @staticmethod def getLogger(className) -> Logger:  if className in LoggerFactory.loggerDict.keys() :    logger = LoggerFactory.loggerDict[className]   if not logger :     logger = LoggerFactory.__initLogger(className)  else :    logger = LoggerFactory.__initLogger(className)  return logger #生成Logger實例 @staticmethod def __initLogger(className) -> Logger:   logger = logging.getLogger(className)  # 設(shè)置logger的level為DEBUG  logger.setLevel(LoggerFactory.LEVEL)  #設(shè)置Logger格式  formatter = logging.Formatter('[%(asctime)s] [%(name)s] [%(levelname)s]: %(message)s')  if LoggerFactory.TYPE == 'CONSOLE' :    # 創(chuàng)建輸出日志到控制臺的StreamHandler   handler = logging.StreamHandler()  else :    # 創(chuàng)建輸出日志到文件Handler   handler = logging.FileHandler(LoggerFactory.LOG_FILENAME)  #添加格式   handler.setFormatter(formatter)  # 給logger添加上handler  logger.addHandler(handler)  localLogger = Logger(logger)  LoggerFactory.loggerDict[className] = localLogger  return localLogger

Logger

該類主要實現(xiàn)了對logging的一些方法的封裝,比較簡單。

'''Created on 2017年7月5日日志處理'''import loggingimport stringclass Logger : def __init__(self, logger : logging):  self.logger = logger def info(self, formatStr:string, *objs):  self.logger.info(formatStr.format(*objs)) def debug(self, formatStr:string, *objs):  self.logger.debug(formatStr.format(*objs)) def error(self, formatStr:string, *objs):  self.logger.error(formatStr.format(*objs))

測試

logger = LoggerFactory.getLogger("Test")logger.info("打印log1:{}, 打印log2:{}", 666, "我是log2")

測試結(jié)果:

[2017-07-20 16:43:00,821] [Test] [INFO]: 打印log1:666, 打印log2:我是log2

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林站長站的支持。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 正安县| 翁源县| 揭西县| 石阡县| 宁陵县| 女性| 家居| 临夏市| 修文县| 武强县| 从化市| 察哈| 武邑县| 海门市| 荆门市| 唐山市| 江源县| 区。| 麻江县| 株洲县| 梅河口市| 玛沁县| 天镇县| 张北县| 福海县| 信丰县| 高要市| 柳林县| 比如县| 嘉善县| 浠水县| 广水市| 汝城县| 三明市| 苍山县| 应用必备| 公安县| 石城县| 榆社县| 兰州市| 灵宝市|