Python logging 모듈 패키지 실현 원리 분석

1.프로필
일부 소프트웨어 가 실 행 될 때 발생 하 는 사건 을 추적 하 는 방법 은 코드 에서 로그 의 일부 방법 을 호출 하여 발생 하 는 일 을 기록 할 수 있 습 니 다.
하나의 사건 은 선택 가능 한 변수 데 이 터 를 포함 할 수 있 는 메시지 로 설명 할 수 있 습 니 다.
사건 은 자신의 중요성 등급 이 있다.
2.logging 로그 시스템 4 대 구성 요소 사용
  • loggers 로그 기
  • 응용 프로그램 코드 를 직접 사용 하 는 인터페이스 제공
  • handlers 프로세서
  • 로그 기록 을 지정 한 목적 위치 로 보 내 는 데 사용 합 니 다
  • filters 필터
  • 필 터 를 통 해 어떤 출력 로그 기록 을 결정 하고 나머지 는 무시 합 니 다
  • formatters 형식 기
  • 로그 출력 형식 제어
  • 사용 코드 는 다음 과 같 습 니 다.
    
    import os, time, logging, sys
    from Common.plugs.get_config import r_config
    
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
    if sys.platform == "win32":
      ENV_CONF_DIR = os.path.join(BASE_DIR, 'Common/conf/env_config.ini').replace('/', '\\')
    else:
      ENV_CONF_DIR = os.path.join(BASE_DIR, 'Common/conf/env_config.ini')
    log_path = r_config(ENV_CONF_DIR, "log", "log_path")
    
    
    class Log:
    
      def __init__(self, log_path):
        self.logName = os.path.join(log_path, '{0}.log'.format(time.strftime('%Y-%m-%d')))
    
      def console_log(self, level, message):
        #     logger
        logger = logging.getLogger()
        logger.setLevel(logging.DEBUG)
    
        #     handler,   debug       
        debug_file = logging.FileHandler(self.logName, 'a+', encoding='utf-8')
        debug_file.setLevel(logging.DEBUG)
    
        #      handler,        
        ch = logging.StreamHandler()
        ch.setLevel(logging.DEBUG)
    
        #   handler     
    
        formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    
        debug_file.setFormatter(formatter)
        ch.setFormatter(formatter)
    
        #  logger  handler
        logger.addHandler(debug_file)
        logger.addHandler(ch)
    
        #       
        if level == 'info':
          logger.info(message)
        elif level == 'debug':
          logger.debug(message)
        elif level == 'warning':
          logger.warning(message)
        elif level == 'error':
          logger.error(message)
    
        elif level == 'critical':
          logger.critical(message)
    
        logger.removeHandler(ch)
        logger.removeHandler(debug_file)
        debug_file.close()
    
      def debug(self, message): #       ,        
        self.console_log('debug', message)
    
      def info(self, message): #   DEBUG,           ,          
        self.console_log('info', message)
    
      def warning(self, message): #     ,        ,          
        self.console_log('warning', message)
    
      def error(self, message): #   WARNING     ,                 
        self.console_log('error', message)
    
      def critical(self, message):     ,                 
        self.console_log('critical', message)
    
    
    if __name__ == '__main__':
      Log(log_path).info("adasd")
      Log(log_path).error("dsadasddasd")
    '''
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기