Я хочу создать 2 регистратора, которые регистрируют 2 разных выхода в Python. Мой регистратор настроен в одном модуле, который будет использоваться двумя другими основными модулями. Моя проблема в том, что я настроил регистратор root таким образом, чтобы разрешить использование моего регистратора двумя различными основными модулями, поэтому я не могу разделить вывод журнала.
Как это можно сделать?
Вот как я настраиваю свою регистрацию:
# logger.py
import logging
def setup_logging():
# If I give name to my getLogger, it will not be configuring root logger and my changes here cannot cascade to all other child loggers.
logger = logging.getLogger()
streamHandler = logging.StreamHandler()
streamFormat = logging.Formatter('%(name)s - %(message)s')
streamHandler.setFormatter(streamFormat)
logger.addHandler(streamHandler)
# main1.py
import logging
from logger import setup_logging
from submodule import log_me
setup_logging()
logger = logging.getLogger('main1')
logger.log('I am from main1')
log_me()
# main2.py
import logging
from logger import setup_logging
from submodule import log_me
setup_logging()
logger = logging.getLogger('main2')
logger.log('I am from main2')
log_me()
# submodule.py
import logging
logger = logging.getLogger('submodule')
def log_me():
logger.info('I am from submodule')
Результат от main1:
main1 - I am from main1
submodule - I am from submodule
Результат от main2:
main2 - I am from main2
submodule - I am from submodule
Вот то, чего я пытаюсь достичь (но, конечно, не удается).
# logger.py
import logging
def setup_logging():
logger = logging.getLogger()
streamHandler = logging.StreamHandler()
streamFormat = logging.Formatter('%(name)s - %(message)s')
streamHandler.setFormatter(streamFormat)
logger.addHandler(streamHandler)
def setup_second_logging():
logger2 = logging.getLogger()
fileHandler = logging.FileHandler('./out.log)
fileFormat = logging.Formatter('%(name)s - %(message)s')
fileHandler.setFormatter(fileFormat)
logger.addHandler(fileHandler)
- тот же main1.py -
- тот же main2.py -
# submodule.py
import logging
from logger import setup_second_logging
setup_second_logging()
logger = logging.getLogger('submodule')
def log_me():
logger.info('I am from submodule')
Результат от main1:
main1 - I am from main1
# no submodule since it is logged to file
Результат от main2:
main2 - I am from main2
# no submodule since it is logged to file