Skip to content

Commit 94d27da

Browse files
authored
feat: ✨ Be able to add your own loggers
1 parent 240c8ab commit 94d27da

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

injection/__init__.pyi

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ from abc import abstractmethod
22
from collections.abc import Callable
33
from contextlib import ContextDecorator
44
from enum import StrEnum
5+
from logging import Logger
56
from types import UnionType
67
from typing import (
78
Any,
@@ -179,6 +180,7 @@ class Module:
179180
Function to unlock the module by deleting cached instances of singletons.
180181
"""
181182

183+
def add_logger(self, logger: Logger) -> Self: ...
182184
@classmethod
183185
def from_name(cls, name: str) -> Self:
184186
"""

injection/core/module.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from __future__ import annotations
22

33
import inspect
4-
import logging
54
from abc import ABC, abstractmethod
65
from collections import OrderedDict
76
from collections.abc import (
@@ -17,6 +16,7 @@
1716
from enum import StrEnum
1817
from functools import partialmethod, singledispatchmethod, update_wrapper
1918
from inspect import Signature, isclass
19+
from logging import Logger, getLogger
2020
from queue import Empty, Queue
2121
from types import MethodType, UnionType
2222
from typing import (
@@ -59,8 +59,6 @@
5959
"PriorityStr",
6060
)
6161

62-
_logger = logging.getLogger(__name__)
63-
6462
"""
6563
Events
6664
"""
@@ -386,6 +384,11 @@ class Module(EventListener, Broker):
386384
init=False,
387385
repr=False,
388386
)
387+
__loggers: list[Logger] = field(
388+
default_factory=lambda: [getLogger(__name__)],
389+
init=False,
390+
repr=False,
391+
)
389392

390393
__instances: ClassVar[dict[str, Module]] = {}
391394

@@ -585,6 +588,10 @@ def unlock(self) -> Self:
585588

586589
return self
587590

591+
def add_logger(self, logger: Logger) -> Self:
592+
self.__loggers.append(logger)
593+
return self
594+
588595
def add_listener(self, listener: EventListener) -> Self:
589596
self.__channel.add_listener(listener)
590597
return self
@@ -603,7 +610,7 @@ def notify(self, event: Event):
603610

604611
with self.__channel.dispatch(event):
605612
yield
606-
_logger.debug(event)
613+
self.__send_debug(event)
607614

608615
def __check_locking(self):
609616
if self.is_locked:
@@ -619,6 +626,10 @@ def __move_module(self, module: Module, priority: Priority):
619626
f"`{module}` can't be found in the modules used by `{self}`."
620627
) from exc
621628

629+
def __send_debug(self, message: object):
630+
for logger in self.__loggers:
631+
logger.debug(message)
632+
622633
@classmethod
623634
def from_name(cls, name: str) -> Self:
624635
with suppress(KeyError):

0 commit comments

Comments
 (0)