Python 日志模块可以';不要加载好的配置

Python 日志模块可以';不要加载好的配置,python,python-3.x,python-logging,Python,Python 3.x,Python Logging,当我的模块a由模块B导入时,我不知道如何使用不同的日志记录配置,但使用另一个日志记录配置。有没有办法解决这个问题 模块A代码: logging.basicConfig(filename="/var/log/ModuleA",format="%(asctime)s %(message)s",datefmt="%d/%m/%Y %H:%M:%S") log=logging.getLogger(__name__) logging.Format

当我的模块a由模块B导入时,我不知道如何使用不同的日志记录配置,但使用另一个日志记录配置。有没有办法解决这个问题

模块A代码:

logging.basicConfig(filename="/var/log/ModuleA",format="%(asctime)s %(message)s",datefmt="%d/%m/%Y %H:%M:%S")
log=logging.getLogger(__name__)
logging.Formatter.converter = time.gmtime
logging.setLevel(logging.DEBUG)
模块B代码:

import ModuleA      
logging.basicConfig(filename="/var/log/ModuleB",format="%(asctime)s %(message)s",datefmt="%d/%m/%Y %H:%M:%S")                                                                                                                                                                                          log=logging.getLogger(__name__)
logging.Formatter.converter = time.gmtime
logging.setLevel(logging.DEBUG)

basicConfig
每个进程只能运行一次(或者,当根记录器没有配置时)

如果希望不同的模块登录到不同的位置,则必须相应地配置它们的记录器,最好在导入模块的应用程序代码中进行配置,而不是在模块本身中进行配置。他们不关心如何定义日志输出

例如,您可以使用配置两个命名记录器,
module1
module2
,以及它们的处理程序和格式化程序:

import logging
from logging.config import dictConfig

dictConfig(
    {
        "version": 1,
        "disable_existing_loggers": False,
        "formatters": {"my_format": {"format": "%(asctime)s %(message)s", "datefmt": "%d/%m/%Y %H:%M:%S",},},
        "handlers": {
            "file_a": {"level": "INFO", "class": "logging.FileHandler", "filename": "a.log", "formatter": "my_format",},
            "file_b": {"level": "INFO", "class": "logging.FileHandler", "filename": "b.log", "formatter": "my_format",},
        },
        "loggers": {
            "module1": {"handlers": ["file_a"], "level": "INFO", "propagate": False,},
            "module2": {"handlers": ["file_b"], "level": "INFO", "propagate": False,},
        },
    }
)
然后,假装它们在
模块1
模块2
中:

log1 = logging.getLogger("module1")
log1.info("Hello")
你会在
a.log
中看到
Hello
,在
b.log
中看到
World

log2 = logging.getLogger("module2")
log2.info("World")