Add logging

This commit is contained in:
William Valentin
2025-07-20 13:05:29 -07:00
parent b9a9742f3b
commit 2b6b607ac4
3 changed files with 87 additions and 0 deletions

8
src/constants.py Normal file
View File

@@ -0,0 +1,8 @@
import os
from dotenv import load_dotenv
load_dotenv(dotenv_path="../.env", override=True)
LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO").upper()
LOG_PATH = os.getenv("LOG_PATH", "/tmp/logs")
LOG_CLEAR = os.getenv("LOG_CLEAR", "False").capitalize()

35
src/init.py Normal file
View File

@@ -0,0 +1,35 @@
import os
from logger import init_logger
from constants import LOG_PATH, LOG_CLEAR, LOG_LEVEL
if not os.path.exists(LOG_PATH):
os.mkdir(LOG_PATH)
else:
pass
log_files = (
f"{LOG_PATH}/app.log",
f"{LOG_PATH}/app.warning.log",
f"{LOG_PATH}/app.error.log",
)
if LOG_LEVEL == "DEBUG":
testing_mode = True
else:
testing_mode = False
logger = init_logger(__name__, testing_mode=testing_mode)
if LOG_CLEAR == "True":
try:
for log_file in log_files:
if os.path.exists(log_file):
with open(log_file, "r+") as t:
t.truncate(0)
else:
pass
except Exception as e:
logger.error(e)
raise
else:
pass

44
src/logger.py Normal file
View File

@@ -0,0 +1,44 @@
import logging
import colorlog
from constants import LOG_PATH
def init_logger(dunder_name, testing_mode) -> logging.Logger:
log_format = (
"%(asctime)s - "
"%(name)s - "
"%(funcName)s - "
"%(levelname)s - "
"%(message)s"
)
""" Initialize logging """
bold_seq = "\033[1m"
colorlog_format = f"{bold_seq} " "%(log_color)s " f"{log_format}"
colorlog.basicConfig(format=colorlog_format)
logger = logging.getLogger(dunder_name)
if testing_mode:
logger.setLevel(logging.DEBUG)
else:
logger.setLevel(logging.INFO)
fh = logging.FileHandler(f"{LOG_PATH}/app.log")
fh.setLevel(logging.DEBUG)
formatter = logging.Formatter(log_format)
fh.setFormatter(formatter)
logger.addHandler(fh)
fh = logging.FileHandler(f"{LOG_PATH}/app.warning.log")
fh.setLevel(logging.WARNING)
formatter = logging.Formatter(log_format)
fh.setFormatter(formatter)
logger.addHandler(fh)
fh = logging.FileHandler(f"{LOG_PATH}/app.error.log")
fh.setLevel(logging.ERROR)
formatter = logging.Formatter(log_format)
fh.setFormatter(formatter)
logger.addHandler(fh)
return logger