1
1
from __future__ import annotations
2
2
3
3
import inspect
4
- import logging
5
4
from abc import ABC , abstractmethod
6
5
from collections import OrderedDict
7
6
from collections .abc import (
17
16
from enum import StrEnum
18
17
from functools import partialmethod , singledispatchmethod , update_wrapper
19
18
from inspect import Signature , isclass
19
+ from logging import Logger , getLogger
20
20
from queue import Empty , Queue
21
21
from types import MethodType , UnionType
22
22
from typing import (
59
59
"PriorityStr" ,
60
60
)
61
61
62
- _logger = logging .getLogger (__name__ )
63
-
64
62
"""
65
63
Events
66
64
"""
@@ -386,6 +384,11 @@ class Module(EventListener, Broker):
386
384
init = False ,
387
385
repr = False ,
388
386
)
387
+ __loggers : list [Logger ] = field (
388
+ default_factory = lambda : [getLogger (__name__ )],
389
+ init = False ,
390
+ repr = False ,
391
+ )
389
392
390
393
__instances : ClassVar [dict [str , Module ]] = {}
391
394
@@ -585,6 +588,10 @@ def unlock(self) -> Self:
585
588
586
589
return self
587
590
591
+ def add_logger (self , logger : Logger ) -> Self :
592
+ self .__loggers .append (logger )
593
+ return self
594
+
588
595
def add_listener (self , listener : EventListener ) -> Self :
589
596
self .__channel .add_listener (listener )
590
597
return self
@@ -603,7 +610,7 @@ def notify(self, event: Event):
603
610
604
611
with self .__channel .dispatch (event ):
605
612
yield
606
- _logger . debug (event )
613
+ self . __send_debug (event )
607
614
608
615
def __check_locking (self ):
609
616
if self .is_locked :
@@ -619,6 +626,10 @@ def __move_module(self, module: Module, priority: Priority):
619
626
f"`{ module } ` can't be found in the modules used by `{ self } `."
620
627
) from exc
621
628
629
+ def __send_debug (self , message : object ):
630
+ for logger in self .__loggers :
631
+ logger .debug (message )
632
+
622
633
@classmethod
623
634
def from_name (cls , name : str ) -> Self :
624
635
with suppress (KeyError ):
0 commit comments