여러 개의 모듈 -파이썬 로깅 - 나는 다음과 같은 구조가 작은 파이썬 프로젝트에서 일하고 있어요
project
-- logs
-- project
__init.py__
classA.py
classB.py
utils.py
-- main.py
다음과 같이 내가 프로젝트에서 __init.py__
에서 로깅 구성을 설정 한을 :
import logging
from logging import StreamHandler
from logging.handlers import RotatingFileHandler
# Create the Logger
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
# Create the Handler for logging data to a file
logger_handler = RotatingFileHandler('logs\\mylog.log', maxBytes=1024, backupCount=5)
logger_handler.setLevel(logging.INFO)
#Create the Handler for logging data to console.
console_handler = StreamHandler()
console_handler.setLevel(logging.INFO)
# Create a Formatter for formatting the log messages
logger_formatter = logging.Formatter('%(name)s - %(levelname)s - %(message)s')
# Add the Formatter to the Handler
logger_handler.setFormatter(logger_formatter)
console_handler.setFormatter(logger_formatter)
# Add the Handler to the Logger
logger.addHandler(logger_handler)
logger.addHandler(console_handler)
이런 식으로 물건을 설치하는 것은 루트 레벨을 전체 프로젝트 레벨이 아닌 패키지 레벨에서 설정하는 것 같습니다. 결과적으로 로그 파일에 main.py
의 로그 된 문은 로그 파일에 나타나지 않고 classA
및 classB
과 utils.py
의 모든 로그 문은 콘솔과 로그 파일로 예상대로 라우팅됩니다.
로깅을 설정하여 한 번 구성하고 프로젝트 전체에서 사용할 수있게하려면 어떻게해야합니까? 로깅 구성 문을 main.py로 이동하려고 시도했지만 작동하지 않았습니다.
안녕하세요, 감사합니다. 그것은 효과가있다! 그래도 후속 질문이 있습니다. 이 방법으로 루트 로거를 설정하면 가져온 다른 모듈의 수준을 설정 한 것 같아요. 이제 로그 파일에 제 3 자 가져온 모듈의 메시지를 가져 오는 중입니다. 필자가 작성한 모듈의 메시지 만 기록하려면 어떻게합니까? – theguyoverthere
각 레벨을 설정할 수 있습니다. 여기에서 레벨을 설정할 수 있습니다. 'logging.getLogger ("product"). setLevel (logging.INFO)'또는'logging.getLogger ("numpy"). setLevel (logging.DEBUG)'를 호출합니다. 로그 구성 파일을 사용하는 것이 더 쉬울 수도 있지만 (https://docs.python.org/2/library/logging.config.html#logging.config.fileConfig) – zvone