记录器记录到2个不同的输出中

问题描述 投票:0回答:1

我想创建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个不同的输出。我的这个记录器配置在一个模块中,其他两个主要模块将使用该模块。我的问题是,因为我...

python logging python-2.x
1个回答
0
投票

您可以尝试将hierarchy用于记录器。例如:

© www.soinside.com 2019 - 2024. All rights reserved.