2017-05-16 1 views
0

는 내가 프로젝트에 대한 로거 클래스를 짓고 있어요, 나는 형식Python 로깅 - 추가 출력?

2017-05-16 13:29:17,573 - Geospatial - INFO - Using only New York Geolocations 
2017-05-16 13:29:18,325 - Server - INFO - Successfully launched AppLogs consumer 

에 로그를 제공하는 출력을 지정한하지만 콘솔 또한 내가 원하지 않는이 줄을 인쇄한다.

INFO:Server:Successfully launched AppLogs consumer

로거 출력 파일에 대한 올바른 출력을 인쇄한다. 어쩌면 핸들러와 관련이 있다고 생각했지만 시도한 수정으로 차단할 수 없었습니다. 어떤 생각이라도 감사 할 것입니다.

여기 클래스의 :

import os 
import logging 
import logging.config 
import yaml 

class Logger(): 

    #Types of Logs: debug, info, warning & error 

    def __init__(self, name): 

     with open("config.yml", 'r') as ymlfile: 
      cfg = yaml.load(ymlfile) 

     if 'file_name' in cfg['logging']: 
      file_name = cfg['logging']['file_name'] 
     else: 
      file_name = 'application' 

     if 'folder_name' in cfg['logging']: 
      folder_name = cfg['logging']['folder_name'] 
     else: 
      folder_name = 'logs' 


     if not os.path.exists('{}/'.format(folder_name)): 
      os.makedirs(folder_name) 
     file_name = os.path.join(os.getcwd(), 
           '{}/{}.log'.format(folder_name, file_name)) 

     name = name.replace('.log','') 

     if name.lower() in cfg['logging']: 

      if cfg['logging'][name.lower()] == 'info': 
       level = logging.INFO 
      elif cfg['logging'][name.lower()] == 'debug': 
       level = logging.DEBUG 
      elif cfg['logging'][name.lower()] == 'error': 
       level = logging.ERROR 
      else: 
       level = logging.DEBUG 
     else: 
      level = logging.DEBUG 

     logger = logging.getLogger('{}'.format(name)) 
     logger.setLevel(level) 

     # create formatter 
     formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') 

     handler = logging.FileHandler(file_name) 
     handler.setFormatter(formatter) 
     handler.setLevel(level) 
     logger.addHandler(handler) 

     ch = logging.StreamHandler() 
     ch.setLevel(level) 

     # add formatter to ch 
     ch.setFormatter(formatter) 

     # add ch to logger 
     logger.addHandler(ch) 

     self._logger = logger 

    def get(self): 
     return self._logger 

답변