1111
1212if TYPE_CHECKING :
1313 from logging import LogRecord
14- from typing import Optional , Tuple , Any
14+ from typing import Optional , Any
1515
1616try :
1717 import loguru
@@ -43,16 +43,16 @@ class LoggingLevels(enum.IntEnum):
4343
4444DEFAULT_LEVEL = LoggingLevels .INFO .value
4545DEFAULT_EVENT_LEVEL = LoggingLevels .ERROR .value
46- # We need to save the handlers to be able to remove them later
47- # in tests (they call `LoguruIntegration.__init__` multiple times,
48- # and we can't use `setup_once` because it's called before
49- # than we get configuration).
50- _ADDED_HANDLERS = (None , None ) # type: Tuple[Optional[int], Optional[int]]
5146
5247
5348class LoguruIntegration (Integration ):
5449 identifier = "loguru"
5550
51+ level = DEFAULT_LEVEL # type: Optional[int]
52+ event_level = DEFAULT_EVENT_LEVEL # type: Optional[int]
53+ breadcrumb_format = DEFAULT_FORMAT
54+ event_format = DEFAULT_FORMAT
55+
5656 def __init__ (
5757 self ,
5858 level = DEFAULT_LEVEL ,
@@ -61,36 +61,27 @@ def __init__(
6161 event_format = DEFAULT_FORMAT ,
6262 ):
6363 # type: (Optional[int], Optional[int], str | loguru.FormatFunction, str | loguru.FormatFunction) -> None
64- global _ADDED_HANDLERS
65- breadcrumb_handler , event_handler = _ADDED_HANDLERS
66-
67- if breadcrumb_handler is not None :
68- logger .remove (breadcrumb_handler )
69- breadcrumb_handler = None
70- if event_handler is not None :
71- logger .remove (event_handler )
72- event_handler = None
73-
74- if level is not None :
75- breadcrumb_handler = logger .add (
76- LoguruBreadcrumbHandler (level = level ),
77- level = level ,
78- format = breadcrumb_format ,
79- )
80-
81- if event_level is not None :
82- event_handler = logger .add (
83- LoguruEventHandler (level = event_level ),
84- level = event_level ,
85- format = event_format ,
86- )
87-
88- _ADDED_HANDLERS = (breadcrumb_handler , event_handler )
64+ LoguruIntegration .level = level
65+ LoguruIntegration .event_level = event_level
66+ LoguruIntegration .breadcrumb_format = breadcrumb_format
67+ LoguruIntegration .event_format = event_format
8968
9069 @staticmethod
9170 def setup_once ():
9271 # type: () -> None
93- pass # we do everything in __init__
72+ if LoguruIntegration .level is not None :
73+ logger .add (
74+ LoguruBreadcrumbHandler (level = LoguruIntegration .level ),
75+ level = LoguruIntegration .level ,
76+ format = LoguruIntegration .breadcrumb_format ,
77+ )
78+
79+ if LoguruIntegration .event_level is not None :
80+ logger .add (
81+ LoguruEventHandler (level = LoguruIntegration .event_level ),
82+ level = LoguruIntegration .event_level ,
83+ format = LoguruIntegration .event_format ,
84+ )
9485
9586
9687class _LoguruBaseHandler (_BaseHandler ):
0 commit comments