Python: 여러 모듈에서 로깅
그러나 그 당시에는 파이썬이 여러 모듈에서 생성된 메시지를 기본 모듈에서 시작된 동일한 로거 개체에 기록하도록 하는 방법을 몰랐습니다. 따라서 이 게시물.
애플리케이션이 아래와 같다고 가정해 보겠습니다.
기본 애플리케이션 파일은 다음과 같아야 합니다.
import logging
#Function to initialize the logger, notice that it takes 2 arguments
#logger_name and logfile
def setup_logger(logger_name,logfile):
logger = logging.getLogger(logger_name)
logger.setLevel(logging.INFO)
# create file handler which logs even debug messages
fh = logging.FileHandler(logfile)
fh.setLevel(logging.INFO)
# create console handler with a higher log level
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
# create formatter and add it to the handlers
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# add the handlers to the logger
logger.addHandler(fh)
logger.addHandler(ch)
return logger
#setup the logger as below with mylogger being the name of the #logger and myloggerfile.log being the name of the logfile
mylogger=setup_logger('mylogger','myloggerfile.log')
mylogger.info("My Logger has been initialized")
##########Very important to import the module after the logger has #been created, if the module is imported before setting up the #logger the module wont log to the desired file
import mymodule
#Then you can continue the rest of the code.
모듈 파일은 아래와 같아야 합니다.
import logging
hostlogger = logging.getLogger('mylogger.module')
hostlogger.info("Logger has been initialised in the host module")
이렇게 하면 애플리케이션 모듈의 로그를 아래와 같이 단일 공통 파일로 가져오는 데 도움이 됩니다.
# cat myloggerfile.log
2022-05-05 17:06:10,024 - mylogger - INFO - My Logger has been initialized
2022-05-05 17:06:10,028 - mylogger.module - INFO - Logger has been initialised in the host module
로거 객체의 이름, mylogger 태그가 있는 메시지는 주 응용 프로그램에서 오고 mylogger.module 메시지는 모듈에서 옵니다.
이것은 또한 여러 파일에 기록하도록 조정할 수 있으며 기본 응용 프로그램 파일에 여러 로거 개체를 생성하고 모듈은 그에 따라 이를 참조할 수 있습니다.
Reference
이 문제에 관하여(Python: 여러 모듈에서 로깅), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/satyajeetd/python-logging-from-multiple-modules-31f5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)