Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/pip/_internal/utils/_log.py: 91%

11 statements  

« prev     ^ index     » next       coverage.py v7.2.7, created at 2023-06-07 06:48 +0000

1"""Customize logging 

2 

3Defines custom logger class for the `logger.verbose(...)` method. 

4 

5init_logging() must be called before any other modules that call logging.getLogger. 

6""" 

7 

8import logging 

9from typing import Any, cast 

10 

11# custom log level for `--verbose` output 

12# between DEBUG and INFO 

13VERBOSE = 15 

14 

15 

16class VerboseLogger(logging.Logger): 

17 """Custom Logger, defining a verbose log-level 

18 

19 VERBOSE is between INFO and DEBUG. 

20 """ 

21 

22 def verbose(self, msg: str, *args: Any, **kwargs: Any) -> None: 

23 return self.log(VERBOSE, msg, *args, **kwargs) 

24 

25 

26def getLogger(name: str) -> VerboseLogger: 

27 """logging.getLogger, but ensures our VerboseLogger class is returned""" 

28 return cast(VerboseLogger, logging.getLogger(name)) 

29 

30 

31def init_logging() -> None: 

32 """Register our VerboseLogger and VERBOSE log level. 

33 

34 Should be called before any calls to getLogger(), 

35 i.e. in pip._internal.__init__ 

36 """ 

37 logging.setLoggerClass(VerboseLogger) 

38 logging.addLevelName(VERBOSE, "VERBOSE")