我想创建2个记录器,这些记录器在Python中记录到2个不同的输出。我的这个记录器配置在一个模块中,其他两个主要模块将使用该模块。我的问题是,因为我将根记录器配置为允许两个不同的主模块使用记录器,所以我无法分离记录输出。
如何完成?
这是我配置日志记录的方式:
# 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
我想创建2个记录器,这些记录器在Python中记录到2个不同的输出。我的这个记录器配置在一个模块中,其他两个主要模块将使用该模块。我的问题是,因为我...
您可以尝试将hierarchy用于记录器。例如: