Add logging
This commit is contained in:
8
src/constants.py
Normal file
8
src/constants.py
Normal 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
35
src/init.py
Normal 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
44
src/logger.py
Normal 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
|
||||||
Reference in New Issue
Block a user