Python 기반의 logging 모듈 지식 총결산

4706 단어 Pythonlogging모듈

앞말


logging 모듈은 Python에 내장된 표준 모듈로 스크립트 실행 로그를 출력하는 데 사용되며 출력 로그의 등급, 로그 저장 경로 등을 설정할 수 있습니다.
  • 서로 다른 로그 등급을 설정하여release 버전에서 중요한 정보만 출력하고 대량의 디버깅 정보를 표시하지 않습니다
  • logging은 정보를 출력하는 위치와 내용을 결정할 수 있다
  • logging 라인이 더 안전합니다
  • 1. 로그 수준


    레벨 정렬: CRITICAL > ERROR > WARNING > INFO > DEBUG
  • debug: 모든 로그, 상세한 정보를 출력합니다. 보통 진단 문제에만 나타납니다
  • info: 인쇄 info,warning,error,critical 수준의 로그, 정상 출력
  • warning:warning,error,critical 단계의 로그를 출력합니다. 일부 이상, 프로그램에 영향을 주지 않습니다
  • error: 인쇄 error,critical 단계의 로그, 프로그램의 일부 기능에 영향을 줍니다
  • critical:critical 레벨을 인쇄하여 프로그램 운행에 영향을 줍니다
  • 
    import logging  #  logging 
    #  
    logging.debug("debug")
    logging.info("info")
    logging.warning("warning")
    logging.error("error")
    logging.critical("critical")
    
    [root@zijie ~]# python log.py
    WARNING:root:warning
    ERROR:root:error
    CRITICAL:root:critical
    
    기본적으로 생성된 root logger의 level은logging입니다.WARNING, 이 등급보다 낮으면 출력하지 않으며, WARNING 등급보다 낮은 내용을 보여주려면logging을 도입할 수 있습니다.basicConfig 로그 수준 로깅을 지정합니다.basicConfig(level=logging.DEBUG)

    2. basicConfig


    형식
    묘사
    filename
    StreamHandler 대신 지정된 파일 이름을 사용하여 FileHandler를 만들도록 지정합니다.
    filemode
    filename을 지정하면 이 모드로 파일 ('r','w','a') 을 엽니다.기본값은 a입니다.
    format
    프로세서에 지정된 형식 문자열을 사용합니다.
    datefmt
    사용 시간.strftime () 에서 지정한 날짜/시간 형식을 수락합니다.
    style
    형식을 지정하면 형식 문자열에 이 스타일을 사용합니다.'% 'printf 스타일,'{'는str.format (),'$'는string에 사용됩니다. 기본값은'%'입니다.
    level
    루트 레코더 레벨을 지정된 레벨로 설정합니다.기본적으로 생성된 root logger의 level은logging입니다.WARNING, 이 등급보다 낮은 것은 출력하지 않습니다.레벨 정렬: CRITICAL > ERROR > WARNING > INFO > DEBUG.(모든 레벨의 내용을 표시해야 하는 경우 level=logging.NOTSET)
    stream
    지정된 스트림을 사용하여 StreamHandler를 초기화합니다.이 인자는 filename과 호환되지 않습니다. 만약 둘 다 존재한다면 ValueError를 던집니다.
    handlers
    지정한 경우, 루트 로그 프로그램에 추가할 수 있도록 만들어진 프로세서의 교체입니다.포맷 프로그램 집합이 없는 모든 프로세서는 이 함수에서 만든 기본 포맷 프로그램에 분배됩니다.이 매개 변수는 filename이나stream과 호환되지 않습니다. 만약 둘 다 존재한다면 ValueError를 던집니다.
    
    import logging
    
    logging.basicConfig(level=logging.INFO,
                        format='%(asctime)s %(filename)s %(levelname)s %(message)s',
                        datefmt='%a %d %b %Y %H:%M:%S',
                        filename='xuehui.log',
                        filemode='w')
    
    logging.info('This is a info.')
    logging.debug('This is a debug message.')
    logging.warning('This is a warning.')
    

    3. 로그 파일 쓰기

    
    import logging
    import os.path
    import time
    
    # logger
    logger = logging.getLogger()
    logger.setLevel(logging.DEBUG)
    #  handler, 
    logdate = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
    log_path = 'logs/'
    log_name = log_path + logdate + '.log'
    logfile = log_name
    fh = logging.FileHandler(logfile, mode='w')
    fh.setLevel(logging.DEBUG)
    #  
    formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
    fh.setFormatter(formatter)
    #  logger handler
    logger.addHandler(fh)
    #  
    logger.debug('this is a logger debug message')
    logger.info('this is a logger info message')
    logger.warning('this is a logger warning message')
    logger.error('this is a logger error message')
    logger.critical('this is a logger critical message')
    

    4. traceback 기록

    
    import logging
    import os.path
    import time
    
    # logger
    logger = logging.getLogger()
    logger.setLevel(logging.DEBUG)
    #  handler, 
    logdate = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
    log_path = 'logs/'
    log_name = log_path + logdate + '.log'
    logfile = log_name
    fh = logging.FileHandler(logfile, mode='w')
    fh.setLevel(logging.DEBUG)
    #  
    formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
    fh.setFormatter(formatter)
    #  logger handler
    logger.addHandler(fh)
    #  
    try:
        open('/data/exist', 'rb')
    except BaseException as e:
        logger.error('Failed to open file', exc_info=True)
    
    Python 기반의 logging 모듈 지식에 대한 이 글을 소개합니다. 더 많은 Python logging 모듈 내용은 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!

    좋은 웹페이지 즐겨찾기