나는 내장 된 logging
을 사용하는 간단한 파이썬 스크립트를 가지고 있습니다.Python - 함수간에 로거 참조를 전달하지 않습니까?
로깅 기능을 구성하고 있습니다.
#!/usr/bin/env python
import logging
import ...
def configure_logging():
logger = logging.getLogger("my logger")
logger.setLevel(logging.DEBUG)
# Format for our loglines
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
# Setup console logging
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
ch.setFormatter(formatter)
logger.addHandler(ch)
# Setup file logging as well
fh = logging.FileHandler(LOG_FILENAME)
fh.setLevel(logging.DEBUG)
fh.setFormatter(formatter)
logger.addHandler(fh)
return logger
def count_parrots():
...
logger.debug??
if __name__ == '__main__':
logger = configure_logging()
logger.debug("I'm a log file")
parrots = count_parrots()
내가 내 __main__
에서 로거 벌금을 호출 할 수 있습니다 : 기본 구조는 다음과 같은 것이다. 그러나 count_parrots() 함수 내부에서 logger를 호출하려면 어떻게해야합니까? 이렇게 로거를 구성하는 가장 무난한 방법은 무엇입니까?
좋아요, 그래서 나는 logging.getLogger를 로깅 할 필요가있는 모든 함수의 시작 부분에서 호출 할 수 있습니다. 조금 낭비적이고 반복적 인 것 같습니다. 공정하다. 아니면 객체 지향적 인 것이 좋을까요? 전체적으로 많은 것을 클래스에 넣으려고합니까? (필자가 알고있는 매우 일반적인 질문이다, 나는 파이썬 세계에서 끝난 것이 무엇인지를 찾고있다). – victorhooi
로거를 인스턴스 변수로 사용하여 클래스에 함수를 넣거나 (선호하는 경우) 개별 함수에 로깅 함수를 추가하는 데 데코레이터를 만들 수 있습니다. –
이 대답은 파이썬의'logging' 모듈 ... – rkrzr