Source code for snews_cs.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.abspath(os.path.join(os.path.dirname(os.path.realpath(__file__)), "../../logs"))
[docs]
log_file = f"{log_dir}/snews_cs.log"
# Check if the directory exists, if not, create it
if not os.path.exists(log_dir):
os.makedirs(log_dir)
# Check if the log file exists, if not, create it
if not os.path.isfile(log_file):
open(log_file, 'w').close()
[docs]
fh = FileHandler(log_file)
formatter.converter = time.gmtime
fh.setFormatter(formatter)
[docs]
logger = getLogger("snews_cs")
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