【问题标题】:Change alembic logger更改蒸馏器记录器
【发布时间】:2020-08-08 10:20:30
【问题描述】:

我们正在使用 alembic 来应用数据库修订。我已经配置了连接,它按预期工作,但我无法让它使用我们的客户记录器。

我们有自己的记录器类(派生自 Python 记录),它在整个应用程序中使用,我希望 alembic 使用它而不是默认值。

有什么方法可以将我们类的记录器对象传递给它吗?我希望它使用自定义记录器中定义的格式和处理程序打印自己的日志。

我试过了,

环境文件

from sqlalchemy import engine_from_config
from sqlalchemy import pool

from alembic import context

from tools.logger import Logger

# this is the Alembic Config object, which provides
# access to the values within the .ini file in use.
config = context.config

# Interpret the config file for Python logging.
# This line sets up loggers basically.
if config.attributes.get('configure_logger', True):
    fileConfig(config.config_file_name)
logger = Logger('alembic.env')

我的脚本

self.alembic_cfg = alembic_config(self.alembic_ini_path, attributes={'configure_logger': False})

我也试过了,

self.alembic_cfg.set_section_option("logger", "keys", "root")

以上两种方法都只是禁用自己的日志。

【问题讨论】:

    标签: python logging sqlalchemy alembic flask-migrate


    【解决方案1】:

    据我所知,不可能用另一个记录器替换一个记录器。但它是你真正需要的吗?

    我希望它使用自定义记录器中定义的格式和处理程序打印自己的日志。

    据我了解,记录器有处理程序,处理程序有格式化程序。如果你有一个带有格式化程序的处理程序,你可以编辑 alembic.ini 并将你的处理程序分配给 alembic 记录器。

    1. 将格式化程序添加到ini 文件中的格式化程序
    [formatters]  # existing section
    keys = generic,pyraider  # just add the name of your formatter
    
    1. 定义您的自定义格式化程序
    [formatter_pyraider]
    class=tools.logger.PyraiderFormatter
    
    1. 将处理程序添加到ini 文件中的处理程序
    [handlers]  # existing section
    keys = console,pyraider  # just add the name of your handler
    
    1. 定义您的自定义处理程序
    [handler_pyraider]  # new section, handler_<your_name>
    class = tools.logger.PyraiderHandler
    args = (sys.stderr,)  # might need to play around with this one
    level = INFO
    formatter = pyraider
    
    1. 将处理程序分配给 alembic 记录器
    [logger_alembic]  # existing section, what you want
    level = INFO
    handlers = pyraider  # <----  add your handler, defined previously, here
    qualname = alembic
    

    alembic.ini 文件上的文档。

    https://alembic.sqlalchemy.org/en/latest/tutorial.html#editing-the-ini-file

    您可能需要调整一些东西,但它应该可以正常工作,因为这基本上就是 python logging 模块的工作原理。

    有关如何为日志模块构建ini 文件的更多信息
    Official Python Docs
    Hitchhiker's Guide

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-19
      • 2018-04-11
      • 2014-03-29
      • 1970-01-01
      • 2021-07-23
      • 2020-03-27
      • 1970-01-01
      • 2020-06-02
      相关资源
      最近更新 更多