-
Notifications
You must be signed in to change notification settings - Fork 0
/
create_logger.py
56 lines (37 loc) · 1.64 KB
/
create_logger.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
"""
A module that creates a simple logger and returns it.
-----------
Classes list:
No classes!
-----------
Functions list:
- create_logger(name: str = __name__, level: int = logging.DEBUG) -> logging.getLogger
"""
import logging
def create_logger(name: str = __name__, level: int = logging.DEBUG) -> logging.getLogger:
"""
A simple function to create a logger. You would typically put this right under all the other modules you imported:
-----------
from bundle_tools.create_logger import create_logger
import logging
logger = create_logger(name=__name__, level=logging.DEBUG)
-----------
And then call `logger.debug()`, `logger.info()`, `logger.warning()`, `logger.error()`, `logger.critical()`, and
`logger.exception` everywhere in that module.
:param name: A string with the logger name. Defaults to __name__.
:param level: A integer with the logger level. Defaults to logging.DEBUG.
:return: A logging.getLogger which you can use as a regular logger.
"""
logger = logging.getLogger(name=name)
console_handler = logging.StreamHandler()
console_handler.setLevel(level=level)
console_formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
console_handler.setFormatter(fmt=console_formatter)
console_handler.setLevel(level=level)
logger.propagate = False
if console_handler not in logger.handlers:
logger.addHandler(hdlr=console_handler)
logger.setLevel(level=level)
logger.debug(f"Created logger named {repr(name)} with level {repr(level)}")
logger.debug(f"Handlers for {repr(name)}: {repr(logger.handlers)}")
return logger