我正在两个项目中使用Python登录。将一个导入到另一个中时,只有一个记录器有效

时间:2019-08-26 17:40:16

标签: python logging

我在两个项目中使用日志记录。日志记录在每种情况下都非常有效。当我将“ B”导入“ A”时,只有“ B”日志。对于每个项目,我都有一个“ logger_settings.py”文件,具有不同的输出位置和文件名。我是否缺少使两个项目都输出其日志文件的设置?

两个项目记录器设置文件都如下所示,但文件名和位置不同:

logging_config = dict(
    version=1,
    formatters={
        'verbose': {
            'format': ("[%(asctime)s] %(levelname)s "
                       "[%(name)s:%(lineno)s] %(message)s"),
            'datefmt': "%d/%b/%Y %H:%M:%S",
        },
        'simple': {
            'format': '%(levelname)s %(message)s',
        },
    },
    handlers={
        'api-logger': {'class': 'logging.handlers.RotatingFileHandler',
                           'formatter': 'verbose',
                           'level': logging.DEBUG,
                           'filename': '../logs/api.log',
                           'maxBytes': 1048576,
                           'backupCount': 4},
        'console': {
            'class': 'logging.StreamHandler',
            'level': 'DEBUG',
            'formatter': 'simple',
            'stream': sys.stdout,
        },
    },
    loggers={
        'api_logger': {
            'handlers': ['api-logger', 'console'],
            'level': logging.DEBUG
        }
    }
)

dictConfig(logging_config)

api_logger = logging.getLogger('api_logger')

独立测试的项目会很好地写入日志。当一个导入到另一个时,将仅记录导入的文件。我希望两个都写入自己的日志文件。

我没有收到任何错误。

1 个答案:

答案 0 :(得分:0)

我找到了这个问题的答案。重申一下,我有两个python项目。我将git + ssh://git@github.com/一个安装到另一个安装中,只有安装的记录器有效。

为使它们都能正确记录,事实证明这是对我的记录器字典的简单补充:

disable_existing_loggers =否

...和whola!就像魔术一样工作...两个记录器都能很好地工作