-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcreate_logger.py
35 lines (30 loc) · 1.38 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
"""
A module that creates a simple logger and returns it.
"""
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:
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