我怎样才能在运行时禁用alembic日志?

时间:2016-05-18 22:39:24

标签: python logging alembic

我需要在单元测试中执行迁移时禁用alembic迁移日志记录,。

我无法从alembic中删除alembic.ini记录器:我自己在执行迁移时需要此输出。

以下对我不起作用: logging.getLogger('alembic').setLevel(logging.CRITICAL)

我如何在运行时禁用它?

4 个答案:

答案 0 :(得分:3)

听起来您正在通过调用alembic命令从单元测试中调用Alembic,这是一个单独的进程,并且不会继承您的日志配置。

相反,您应该以编程方式调用Alembic:

import logging
import alembic.config
import alembic.command

logging.getLogger('alembic').setLevel(logging.CRITICAL)

alembic_cfg = alembic.config.Config('alembic.ini')
alembic.command.upgrade(alembic_cfg, 'head')

有关Alembic API的详细信息,请参阅文档。

答案 1 :(得分:1)

您需要编辑alembic.ini文件并更改此特定日志的日志记录设置。您可以在relevant section of the Alembic tutorial中阅读相关内容。默认情况下,此部分应位于配置文件中:

[logger_alembic]
level = INFO
handlers =
qualname = alembic

我将我的设置设为WARN,这些日志就消失了。

答案 2 :(得分:0)

您不想在alembic.ini文件中更改它,而是在env.py文件中更改它。那里会有一条看似

的线
fileConfig(config.config_file_name)

这将使用alembic.ini配置文件设置日志记录。在此行之后,您可以通过

为alembic记录器做任何您想做的事情
logging.getLogger('alembic')

答案 3 :(得分:0)

根据其他答案,这对我有用:

import alembic.config
import alembic.command

alembic_cfg = alembic.config.Config('alembic.ini')
alembic_cfg.set_section_option("logger_alembic", "level", "ERROR")
alembic.command.upgrade(alembic_cfg, 'head')

除了导入日志记录,我们还可以替换包含有关日志级别信息的config节值。