Skip to content

Commit 0212d1e

Browse files
committed
🐛 fix(sqla): redirect logger
1 parent 9b79aca commit 0212d1e

File tree

2 files changed

+20
-5
lines changed

2 files changed

+20
-5
lines changed

nonebot_plugin_orm/__init__.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -191,14 +191,14 @@ def _init_table():
191191
_plugins = {}
192192

193193
_get_plugin_by_module_name = lru_cache(None)(get_plugin_by_module_name)
194-
for model in Model.__subclasses__():
194+
for model in get_subclasses(Model):
195195
table: Table | None = getattr(model, "__table__", None)
196196

197197
if table is None or (bind_key := table.info.get("bind_key")) is None:
198198
continue
199199

200200
if plugin := _get_plugin_by_module_name(model.__module__):
201-
_plugins[plugin.name] = plugin
201+
_plugins[plugin.name.replace("-", "_")] = plugin
202202

203203
_binds[model] = _engines.get(bind_key, _engines[""])
204204
table.to_metadata(_metadatas.get(bind_key, _metadatas[""]))
@@ -209,9 +209,16 @@ def _init_logger():
209209
if isinstance(log_level, str):
210210
log_level = logger.level(log_level).no
211211

212-
levels = {"alembic": log_level, "sqlalchemy": log_level}
213-
if not plugin_config.sqlalchemy_echo:
214-
levels["sqlalchemy.engine"] = levels["sqlalchemy.pool"] = logging.WARNING
212+
echo_log_level = log_level if plugin_config.sqlalchemy_echo else logging.WARNING
213+
214+
levels = {
215+
"alembic": log_level,
216+
"sqlalchemy": log_level,
217+
**{
218+
_qual_logger_name_for_cls(cls): echo_log_level
219+
for cls in get_subclasses(Identified)
220+
},
221+
}
215222

216223
handler = LoguruHandler()
217224
for name, level in levels.items():

nonebot_plugin_orm/utils.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,14 @@ def is_editable(plugin: Plugin) -> bool:
260260
return direct_url_data.get("dir_info", {}).get("editable", False)
261261

262262

263+
def get_subclasses(cls: type[_T]) -> set[type[_T]]:
264+
subclasses = set()
265+
for subclass in cls.__subclasses__():
266+
subclasses.add(subclass)
267+
subclasses.update(get_subclasses(subclass))
268+
return subclasses
269+
270+
263271
if sys.version_info >= (3, 10):
264272
from inspect import get_annotations as get_annotations # nopycln: import
265273
else:

0 commit comments

Comments
 (0)