關鍵代碼spa
調用方:debug
1 from Logger import MyLogger 2 import logging 3 import sys, os 4 5 def getLogger(): 6 # get the file name 7 fileUrl = sys.argv[0] 8 filepath, tmpfilename = os.path.split(fileUrl) 9 shotname, extension = os.path.splitext(tmpfilename) 10 11 # get the logger object 12 logger = MyLogger(logname='log.txt', loglevel=1, logger=shotname).getlog() 13 return logger 14 15 logger =getLogger() 16 logger.debug("Hoory, show!")
Logger.py日誌
1 #開發一個日誌系統, 既要把日誌輸出到控制檯, 還要寫入日誌文件 2 import logging 3 4 class MyLogger(): 5 format_dict = { 6 1 : logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'), 7 2 : logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'), 8 3 : logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'), 9 4 : logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'), 10 5 : logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') 11 } 12 13 def __init__(self, logname, loglevel, logger): 14 ''' 15 指定保存日誌的文件路徑,日誌級別,以及調用文件 16 將日誌存入到指定的文件中 17 ''' 18 19 # 建立一個logger 20 self.logger = logging.getLogger(logger) 21 self.logger.setLevel(logging.DEBUG) 22 23 # 建立一個handler,用於寫入日誌文件 24 fh = logging.FileHandler(logname) 25 fh.setLevel(logging.DEBUG) 26 27 # 再建立一個handler,用於輸出到控制檯 28 ch = logging.StreamHandler() 29 ch.setLevel(logging.DEBUG) 30 31 # 定義handler的輸出格式 32 formatter = logging.Formatter('%(asctime)s %(name)s %(thread)d %(levelname)s %(message)s') 33 fh.setFormatter(formatter) 34 ch.setFormatter(formatter) 35 36 # only first time need to add the handler 37 if(self.logger.hasHandlers() == False): 38 self.logger.addHandler(fh) 39 self.logger.addHandler(ch) 40 41 42 def getlog(self): 43 return self.logger
Logger相關屬性code
能夠經過下面的代碼來進行設置(基本上不須要這麼設置,由於經過getlogger()獲取的logger對象並無集成root的相關配置):orm
1 logging.basicConfig(filename="log2.txt", level=logging.WARNING)
關於format對象