Coverage for C:\src\imod-python\imod\logging\config.py: 100%

21 statements  

« prev     ^ index     » next       coverage.py v7.5.1, created at 2024-05-08 14:15 +0200

1from enum import Enum 

2 

3import imod 

4 

5from .loglevel import LogLevel 

6from .logurulogger import LoguruLogger 

7from .nulllogger import NullLogger 

8from .pythonlogger import PythonLogger 

9 

10 

11class LoggerType(Enum): 

12 """ 

13 The available logging frameworks. 

14 """ 

15 

16 PYTHON = PythonLogger.__name__ 

17 """ 

18 The default python logging framework. 

19 """ 

20 LOGURU = LoguruLogger.__name__ 

21 """ 

22 The loguru logging framework. 

23 """ 

24 NULL = NullLogger.__name__ 

25 """ 

26 A dummy logger that doesn't log anything. 

27 """ 

28 

29 

30def configure( 

31 logger_type: LoggerType, 

32 log_level: LogLevel = LogLevel.WARNING, 

33 add_default_stream_handler: bool = True, 

34 add_default_file_handler: bool = False, 

35) -> None: 

36 """ 

37 Setup the logging framework and assign it a log level. 

38 To add a default stream- and/or file-handler you can use the 

39 ``add_default_stream_handler`` or ``add_default_file_handler`` flags. If a 

40 default file-handler is added then the log output will be written to 

41 the `imod-python.log` file 

42 

43 Parameters 

44 ---------- 

45 logger_type : LoggerType 

46 The logging framework to be used. 

47 log_level : LogLevel 

48 The log level to be set. 

49 add_default_stream_handler : bool 

50 A flag that specifies if a default stream-handler should be added. 

51 True by default. 

52 add_default_file_handler : bool 

53 A flag that specifies if a default filehandler should be added. 

54 The log will be written to `imod-python.log`. False by default. 

55 """ 

56 match logger_type: 

57 case LoggerType.PYTHON: 

58 imod.logging.logger.instance = PythonLogger( 

59 log_level, add_default_stream_handler, add_default_file_handler 

60 ) 

61 case LoggerType.LOGURU: 

62 imod.logging.logger.instance = LoguruLogger( 

63 log_level, add_default_stream_handler, add_default_file_handler 

64 ) 

65 case _: 

66 imod.logging.logger.instance = NullLogger()