我们正在使用alembic应用DB修订版。我已经配置了连接,它按照预期工作,但我不能让它使用我们的客户记录器。
我们有自己的记录器类(派生自Python日志记录),它在整个应用程序中使用,我希望alembic使用它而不是默认的。
有没有办法把我们类的记录器对象传递给它?我希望它使用自定义记录器中定义的格式和处理程序打印自己的日志。
我试过了
env文件
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")上述两种方法都只是禁用自己的日志。
发布于 2020-05-02 18:21:04
据我所知,不可能用另一个记录器替换。但这是你真正需要的吗?
我希望它使用自定义记录器中定义的格式和处理程序打印自己的日志。
据我所知,记录器有处理程序,处理程序有格式化程序。如果您有一个带有格式化程序的处理程序,则只需编辑alembic.ini并将处理程序分配给alembic记录器。
ini文件中向格式化程序添加格式化程序[formatters] # existing section
keys = generic,pyraider # just add the name of your formatter[formatter_pyraider]
class=tools.logger.PyraiderFormatterini文件中向处理程序添加处理程序[handlers] # existing section
keys = console,pyraider # just add the name of your handler[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[logger_alembic] # existing section, what you want
level = INFO
handlers = pyraider # <---- add your handler, defined previously, here
qualname = alembicalembic.ini文件上的文档。
https://alembic.sqlalchemy.org/en/latest/tutorial.html#editing-the-ini-file
您可能需要修改一些东西,但是它应该可以工作,因为这基本上就是python模块的工作方式。
关于如何为日志模块构造ini文件的更多信息
https://stackoverflow.com/questions/61415220
复制相似问题