Source code for snews_pt.core.logging
"""
Modified version of Geoffrey Letner's python 201 logger.
Ref: https://python-tutorial.dev/201/tutorial/logging.html
"""
import os
import time
from datetime import date
from socket import gethostname
from logging import (
getLogger,
NullHandler,
Formatter,
FileHandler,
DEBUG,
INFO,
WARNING,
ERROR,
CRITICAL,
)
[docs]
log_date = date.today().strftime("%Y-%m-%d")
[docs]
log_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), "../../logs")
[docs]
log_file = f"{log_dir}/{log_date}.log"
if not os.path.isdir(log_dir):
os.mkdir(log_dir)
[docs]
fh = FileHandler(log_file)
formatter.converter = time.gmtime
fh.setFormatter(formatter)
[docs]
logger = getLogger("snews_pt")
logger.addHandler(NullHandler())
[docs]
levels = {
"debug": DEBUG,
"info": INFO,
"warning": WARNING,
"error": ERROR,
"critical": CRITICAL,
}
[docs]
def initialize_logging(level):
"""Initialize top-level logger with the file handler and a `level`."""
if fh not in logger.handlers:
logger.addHandler(fh)
logger.setLevel(levels.get(level))
logger.propagate = False