我需要在单元测试中执行迁移时禁用alembic迁移日志记录,。
我无法从alembic
中删除alembic.ini
记录器:我自己在执行迁移时需要此输出。
以下对我不起作用:
logging.getLogger('alembic').setLevel(logging.CRITICAL)
我如何在运行时禁用它?
答案 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节值。