1
1
"""A centralized logging system for any library
2
2
3
- source code inspired by https://github.com/huggingface/transformers/blob/main/src/transformers/utils/logging.py
3
+ source code inspired by https://gist. github.com/DiTo97/9a0377f24236b66134eb96da1ec1693f
4
4
"""
5
+
5
6
import logging
6
7
import os
7
8
import sys
@@ -25,16 +26,17 @@ def _set_library_root_logger() -> None:
25
26
global _default_handler
26
27
27
28
with _semaphore :
28
- if _default_handler : return
29
-
29
+ if _default_handler :
30
+ return
31
+
30
32
_default_handler = logging .StreamHandler () # sys.stderr as stream
31
-
33
+
32
34
# https://github.com/pyinstaller/pyinstaller/issues/7334#issuecomment-1357447176
33
35
if sys .stderr is None :
34
36
sys .stderr = open (os .devnull , "w" )
35
37
36
38
_default_handler .flush = sys .stderr .flush
37
-
39
+
38
40
library_root_logger = _get_library_root_logger ()
39
41
library_root_logger .addHandler (_default_handler )
40
42
library_root_logger .setLevel (_default_logging_level )
@@ -74,8 +76,8 @@ def set_verbosity_error() -> None:
74
76
75
77
def set_verbosity_fatal () -> None :
76
78
set_verbosity (logging .FATAL )
77
-
78
-
79
+
80
+
79
81
def set_handler (handler : logging .Handler ) -> None :
80
82
_set_library_root_logger ()
81
83
@@ -86,31 +88,31 @@ def set_handler(handler: logging.Handler) -> None:
86
88
87
89
def set_default_handler () -> None :
88
90
set_handler (_default_handler )
89
-
90
-
91
+
92
+
91
93
def unset_handler (handler : logging .Handler ) -> None :
92
94
_set_library_root_logger ()
93
95
94
96
assert handler is not None
95
97
96
98
_get_library_root_logger ().removeHandler (handler )
97
-
98
-
99
+
100
+
99
101
def unset_default_handler () -> None :
100
102
unset_handler (_default_handler )
101
103
102
104
103
105
def set_propagation () -> None :
104
106
_get_library_root_logger ().propagate = True
105
-
106
-
107
+
108
+
107
109
def unset_propagation () -> None :
108
110
_get_library_root_logger ().propagate = False
109
-
110
-
111
+
112
+
111
113
def set_formatting () -> None :
112
114
"""sets formatting for all handlers bound to the root logger
113
-
115
+
114
116
```
115
117
[levelname|filename|line number] time >> message
116
118
```
@@ -121,17 +123,17 @@ def set_formatting() -> None:
121
123
122
124
for handler in _get_library_root_logger ().handlers :
123
125
handler .setFormatter (formatter )
124
-
126
+
125
127
126
128
def unset_formatting () -> None :
127
129
for handler in _get_library_root_logger ().handlers :
128
130
handler .setFormatter (None )
129
-
131
+
130
132
131
133
@lru_cache (None )
132
134
def warning_once (self , * args , ** kwargs ):
133
135
"""emits warning logs with the same message only once"""
134
136
self .warning (* args , ** kwargs )
135
137
136
138
137
- logging .Logger .warning_once = warning_once
139
+ logging .Logger .warning_once = warning_once
0 commit comments