11
11
12
12
if TYPE_CHECKING :
13
13
from logging import LogRecord
14
- from typing import Optional , Tuple , Any
14
+ from typing import Optional , Any
15
15
16
16
try :
17
17
import loguru
@@ -43,16 +43,16 @@ class LoggingLevels(enum.IntEnum):
43
43
44
44
DEFAULT_LEVEL = LoggingLevels .INFO .value
45
45
DEFAULT_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]]
51
46
52
47
53
48
class LoguruIntegration (Integration ):
54
49
identifier = "loguru"
55
50
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
+
56
56
def __init__ (
57
57
self ,
58
58
level = DEFAULT_LEVEL ,
@@ -61,36 +61,27 @@ def __init__(
61
61
event_format = DEFAULT_FORMAT ,
62
62
):
63
63
# 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
89
68
90
69
@staticmethod
91
70
def setup_once ():
92
71
# 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
+ )
94
85
95
86
96
87
class _LoguruBaseHandler (_BaseHandler ):
0 commit comments