Coverage for stlog/handler.py: 69%

16 statements  

« prev     ^ index     » next       coverage.py v7.2.7, created at 2024-08-21 07:31 +0000

1from __future__ import annotations 

2 

3import logging 

4 

5from stlog.base import ( 

6 StlogError, 

7 rich_dump_exception_on_console, 

8) 

9 

10 

11class CustomRichHandler(logging.Handler): 

12 def __init__(self, console, level: int = logging.NOTSET, **kwargs): 

13 self.console = console 

14 super().__init__(level=level) 

15 

16 def emit(self, record: logging.LogRecord): 

17 if self.formatter is None: 

18 raise StlogError("no formatted set") 

19 self.console.print(self.formatter.format(record)) 

20 if record.exc_info: 

21 exc_type, exc_value, exc_traceback = record.exc_info 

22 assert exc_type is not None 

23 assert exc_value is not None 

24 rich_dump_exception_on_console( 

25 self.console, exc_type, exc_value, exc_traceback 

26 )