如何将根记录器上的记录重定向到自定义记录器?

时间:2019-09-07 12:43:55

标签: python logging

我有一个用例,我希望所有日志都放在一个文件中。我正在使用自定义记录器,在该记录器上定义了文件处理程序以记录到所需文件。

我面临的问题是我使用的外部模块正在使用root记录器,并且我也不想将它们记录到同一文件中。

自定义记录器模块


def initialize_logger():
    logger = logging.getLogger("custom")
    file_handler = FileHandler(filename="test")
    file_handler.setLevel(logging.INFO)
    file_handler.setFormatter(FORMATTER)
    logger.addHandler(file_handler)
    return logger

def get_logger():
    return logging.getLogger("custom")


我的应用程序中的模块正在使用以下代码


from log import get_logger
logger = get_logger()

logger.info("Test")

我正在使用的外部模块具有以下行。

logging.info("test")

有没有办法在同一文件的外部模块中捕获日志?

1 个答案:

答案 0 :(得分:1)

只需将您的处理程序添加到根记录器,而不是您的记录器即可。

root_logger = logging.getLogger()
root_logger.addHandler(...)

这样,任何日志都将到达此文件处理程序。