Heim >Backend-Entwicklung >Python-Tutorial >Detaillierte Erläuterung der Python-Implementierung der Logger-Druckfunktion
Vor kurzem bin ich auf die Notwendigkeit des Druckens bei der Arbeit gestoßen und habe festgestellt, dass Logger in Python das Drucken sehr gut implementieren kann. Daher stellt Ihnen der folgende Artikel hauptsächlich die relevanten Informationen zur Implementierung des Loggers vor Druckfunktion. Im Artikel Die Einführung durch Beispielcode ist sehr detailliert, Freunde in Not können darauf verweisen.
Vorwort
Wie wir alle wissen, gibt es in Python eine Suite namens Logging speziell für das Logger-Drucken, aber der Logger ist nur in dieser Suite enthalten empfängt einen String-Typ. Der Logger druckt Informationen. Daher müssen wir die zu druckenden Informationen vor der Verwendung in einer Zeichenfolge verketten, was sich nicht positiv auf die Sauberkeit des Codes auswirkt.
Basierend auf der Protokollierung habe ich ein Logger-Drucktool implementiert, das dem Logback von Java ähnelt. Die Implementierung ist relativ einfach und kann einige einfache Logger-Druckanforderungen erfüllen. Unten gibt es nicht viel zu sagen, werfen wir einen Blick auf die ausführliche Einführung:
LoggerFactory
Diese Klasse wird verwendet, um Logger für andere Aufrufe zu generieren Klasseninstanzen und speichern Sie diese Instanzen.
''' Created on 2017年7月20日 Logger工厂,保存每个类的Logger实例 ''' from slient.bigdata.common.logger import Logger import logging class LoggerFactory : LOG_FILENAME='bigdata_python.log' #logger保存文件 TYPE = "CONSOLE" #logger打印类型 #TYPE = "FILE" LEVEL = logging.DEBUG #logger级别 #LEVEL = logging.INFO loggerDict = {} #对外部开放的Logger调用方法 @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) # 设置logger的level为DEBUG logger.setLevel(LoggerFactory.LEVEL) #设置Logger格式 formatter = logging.Formatter('[%(asctime)s] [%(name)s] [%(levelname)s]: %(message)s') if LoggerFactory.TYPE == 'CONSOLE' : # 创建输出日志到控制台的StreamHandler handler = logging.StreamHandler() else : # 创建输出日志到文件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
Diese Klasse implementiert hauptsächlich einige Methoden zum Protokollieren der Verpackung ist relativ einfach.
''' Created on 2017年7月5日 日志处理 ''' import logging import string class 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))
Testen
logger = LoggerFactory.getLogger("Test") logger.info("打印log1:{}, 打印log2:{}", 666, "我是log2")
Testergebnisse:
[2017-07-20 16:43:00,821] [Test] [INFO]: 打印log1:666, 打印log2:我是log2
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Python-Implementierung der Logger-Druckfunktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!