简体   繁体   English

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

[英]How to redirect logging on root logger to custom logger?

I have a use case where I want all logs to go to a single file. 我有一个用例,我希望所有日志都转到一个文件中。 I am using a custom logger on which I define the file handler to log to desired file. 我使用的是自定义记录器,在该记录器上定义了文件处理程序以记录到所需文件。

The problem I'm facing is the external modules which I use are using root loggers and I wan't them also to log to same file. 我面临的问题是我使用的是使用外部记录程序的外部模块,我也不想将它们记录到同一文件中。

Custom logger module 自定义记录器模块


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")


Modules in my application are using the following code 我的应用程序中的模块正在使用以下代码


from log import get_logger
logger = get_logger()

logger.info("Test")

External modules which I am using are having the following line. 我正在使用的外部模块具有以下行。

logging.info("test")

Is there a way I can capture logs in external modules in same file? 有什么方法可以捕获同一文件中外部模块中的日志?

Just add your handler to the root logger, instead of your logger. 只需将您的处理程序添加到根记录器,而不是您的记录器即可。

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

This way, any log will reach to this file-handler. 这样,任何日志都将到达此文件处理程序。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM