14
14
# limitations under the License.
15
15
16
16
17
- from __future__ import annotations
17
+ from __future__ import annotations as _
18
18
19
- import asyncio
19
+ import asyncio as _asyncio
20
20
from contextlib import suppress as _suppress
21
21
from logging import (
22
- CRITICAL ,
23
- DEBUG ,
24
- ERROR ,
25
- Filter ,
26
- Formatter ,
27
- getLogger ,
28
- INFO ,
29
- StreamHandler ,
30
- WARNING ,
22
+ CRITICAL as _CRITICAL ,
23
+ DEBUG as _DEBUG ,
24
+ ERROR as _ERROR ,
25
+ Filter as _Filter ,
26
+ Formatter as _Formatter ,
27
+ getLogger as _getLogger ,
28
+ INFO as _INFO ,
29
+ StreamHandler as _StreamHandler ,
30
+ WARNING as _WARNING ,
31
31
)
32
- from sys import stderr
32
+ from sys import stderr as _stderr
33
33
34
34
# ignore TCH001 to make sphinx not completely drop the ball
35
35
from . import _typing as _t # noqa: TCH001
41
41
]
42
42
43
43
44
- class ColourFormatter ( Formatter ):
44
+ class _ColourFormatter ( _Formatter ):
45
45
"""Colour formatter for pretty log output."""
46
46
47
47
def format (self , record ):
48
48
s = super ().format (record )
49
- if record .levelno == CRITICAL :
49
+ if record .levelno == _CRITICAL :
50
50
return f"\x1b [31;1m{ s } \x1b [0m" # bright red
51
- elif record .levelno == ERROR :
51
+ elif record .levelno == _ERROR :
52
52
return f"\x1b [33;1m{ s } \x1b [0m" # bright yellow
53
- elif record .levelno == WARNING :
53
+ elif record .levelno == _WARNING :
54
54
return f"\x1b [33m{ s } \x1b [0m" # yellow
55
- elif record .levelno == INFO :
55
+ elif record .levelno == _INFO :
56
56
return f"\x1b [37m{ s } \x1b [0m" # white
57
- elif record .levelno == DEBUG :
57
+ elif record .levelno == _DEBUG :
58
58
return f"\x1b [36m{ s } \x1b [0m" # cyan
59
59
else :
60
60
return s
61
61
62
62
63
- class TaskIdFilter ( Filter ):
63
+ class _TaskIdFilter ( _Filter ):
64
64
"""Injecting async task id into log records."""
65
65
66
66
def filter (self , record ):
67
67
try :
68
- record .task = id (asyncio .current_task ())
68
+ record .task = id (_asyncio .current_task ())
69
69
except RuntimeError :
70
70
record .task = None
71
71
return True
@@ -116,18 +116,18 @@ class Watcher:
116
116
def __init__ (
117
117
self ,
118
118
* logger_names : str | None ,
119
- default_level : int = DEBUG ,
120
- default_out : _t .TextIO = stderr ,
119
+ default_level : int = _DEBUG ,
120
+ default_out : _t .TextIO = _stderr ,
121
121
colour : bool = False ,
122
122
thread_info : bool = True ,
123
123
task_info : bool = True ,
124
124
) -> None :
125
125
super ().__init__ ()
126
- self .logger_names = logger_names
127
- self ._loggers = [getLogger (name ) for name in self .logger_names ]
128
- self .default_level = default_level
129
- self .default_out = default_out
130
- self ._handlers : dict [str , StreamHandler ] = {}
126
+ self ._logger_names = logger_names
127
+ self ._loggers = [_getLogger (name ) for name in self ._logger_names ]
128
+ self ._default_level = default_level
129
+ self ._default_out = default_out
130
+ self ._handlers : dict [str , _StreamHandler ] = {}
131
131
self ._task_info = task_info
132
132
133
133
format_ = "%(asctime)s %(message)s"
@@ -137,7 +137,7 @@ def __init__(
137
137
format_ = "[Thread %(thread)d] " + format_
138
138
if not colour :
139
139
format_ = "[%(levelname)-8s] " + format_
140
- formatter_cls = ColourFormatter if colour else Formatter
140
+ formatter_cls = _ColourFormatter if colour else _Formatter
141
141
self .formatter = formatter_cls (format_ )
142
142
143
143
def __enter__ (self ) -> Watcher :
@@ -162,15 +162,15 @@ def watch(
162
162
:type out: stream or file-like object
163
163
"""
164
164
if level is None :
165
- level = self .default_level
165
+ level = self ._default_level
166
166
if out is None :
167
- out = self .default_out
167
+ out = self ._default_out
168
168
self .stop ()
169
- handler = StreamHandler (out )
169
+ handler = _StreamHandler (out )
170
170
handler .setFormatter (self .formatter )
171
171
handler .setLevel (level )
172
172
if self ._task_info :
173
- handler .addFilter (TaskIdFilter ())
173
+ handler .addFilter (_TaskIdFilter ())
174
174
for logger in self ._loggers :
175
175
self ._handlers [logger .name ] = handler
176
176
logger .addHandler (handler )
@@ -186,8 +186,8 @@ def stop(self) -> None:
186
186
187
187
def watch (
188
188
* logger_names : str | None ,
189
- level : int = DEBUG ,
190
- out : _t .TextIO = stderr ,
189
+ level : int = _DEBUG ,
190
+ out : _t .TextIO = _stderr ,
191
191
colour : bool = False ,
192
192
thread_info : bool = True ,
193
193
task_info : bool = True ,
0 commit comments