From a423419eca285d0b23ad3f31956297851a608d22 Mon Sep 17 00:00:00 2001 From: Hassan Abouelela <47495861+HassanAbouelela@users.noreply.github.com> Date: Sun, 14 Mar 2021 10:45:36 +0300 Subject: Adds Logging Support Adds formatters and handlers for logging. Signed-off-by: Hassan Abouelela <47495861+HassanAbouelela@users.noreply.github.com> --- backend/logs.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 backend/logs.py (limited to 'backend/logs.py') diff --git a/backend/logs.py b/backend/logs.py new file mode 100644 index 0000000..6b4a300 --- /dev/null +++ b/backend/logs.py @@ -0,0 +1,45 @@ +""" +Patch the uvicorn, watchgod, and global loggers. +""" +import logging +import sys +from logging import handlers +from pathlib import Path + +from backend import constants + +# Setup constants +LOGGING_LEVEL = logging.INFO if constants.PRODUCTION else logging.DEBUG +FORMATTER = logging.Formatter("%(asctime)s | %(name)s | %(levelname)s | %(message)s") + +# Setup the project logger +handler = logging.StreamHandler(sys.stdout) +handler.setFormatter(FORMATTER) + +logger = logging.getLogger("backend") +logger.setLevel(LOGGING_LEVEL) +logger.addHandler(handler) + +# Format uvicorn logging +try: + logging.getLogger("uvicorn").handlers[0].setFormatter(FORMATTER) +except KeyError: + logger.warning("Could not patch uvicorn logger, continuing.") + +# Add file handlers for local development +if constants.LOG_FILES: + # Setup uvicorn handler + uvicorn_log = Path("logs", ".uvicorn.log") + uvicorn_log.parent.mkdir(exist_ok=True) + # Store two copies of 100KB Files + uvicorn_handler = handlers.RotatingFileHandler(uvicorn_log, maxBytes=100000, backupCount=1) + uvicorn_handler.setFormatter(FORMATTER) + + # Setup app handler + backend_log = Path("logs", ".backend.log") + file_handler = logging.FileHandler(backend_log) + file_handler.setFormatter(FORMATTER) + + # Add all handlers + logging.getLogger("uvicorn").addHandler(uvicorn_handler) + logger.addHandler(file_handler) -- cgit v1.2.3