나는이 나는 보통 설정으로 확장 로거 무엇을 모방 한 다음 테스트 스크립트 :인스턴스에는 '추적'멤버가 없습니다 (그러나 어떤 종류의 추론 할 수없는)
import logging
TRACE_LL = 25
TRACE_LSTR = 'TRACE'
LOG_FORMATTER = '%(asctime)s - %(levelname)-10s - %(message)s'
class MyLogger(logging.Logger):
def __init__(self, log_name):
logging.Logger.__init__(self, log_name)
self.setLevel(TRACE_LL)
hdlr = logging.StreamHandler()
formatter = logging.Formatter(LOG_FORMATTER)
hdlr.setFormatter(formatter)
self.addHandler(hdlr)
def trace(self, txt, *args, **kwargs):
self.log(TRACE_LL, txt, *args, **kwargs)
def getlog(name):
return logging.getLogger(name)
def setup():
logging.setLoggerClass(MyLogger)
logging.addLevelName(TRACE_LL, TRACE_LSTR)
setup()
log = getlog('mylog')
log.trace('Trace this')
실행을 이 예상대로 작동합니다
2014-01-07 07:22:59,982 - TRACE - Trace this
하지만이에 pylint
을 실행하는 원인을 문제 :
» pylint -E getlog_test.py
No config file found, using default configuration
************* Module getlog_test
E: 29,0: Instance of 'RootLogger' has no 'trace' member (but some types could not be inferred)
로깅을 광범위하게 사용하기 때문에 코드베이스에 수백 개의 메시지가 표시됩니다.
어떻게 필 링트 오류를 해결할 수 있습니까?
다른 방법으로는 사용하지 않도록 설정하는 것만으로도 충분하지만, RootLogger
인스턴스의 경우에만 가능합니다. 코드의 다른 부분에이 문제가 있는지 계속 알고 싶습니다.
감사합니다. 나는 이것을 테스트하고 있습니다. 내 문제에 대한 오류 코드는'E1103' ('pylint --list-msgs | grep "그러나 어떤 유형은"')이 유추 될 수 없습니다. – dangonfast
@gonvaled. 오류 번호를 업데이트하고이 기능에 대한 pylint의 설명서 링크를 추가했습니다. – John1024
나는 이것을 테스트했다. '--disable E1103' 명령 줄에서 비활성화 할 수는 있지만 영향을받은 모듈 (내 로거 모듈)을 선택적으로 비활성화 할 수는 없습니다. 로거를 사용하여 모든 파일에'#pylint : disable = E1103'이 가능하지 않으며'RootLogger'와 관련이없는 다른 오류도 숨길 것입니다. 그래서 현재 명령 줄'--disable' 플래그를 사용하여 에러 메시지가 전역 적으로 비활성화됩니다.'RootLogger' **와 ** 다른 영향을받는 클래스는 피해야합니다. 그러나 나는 당분간 이걸로 살아야 할 것 같아. – dangonfast