From fbe9d9997650081eeb0d2c396bd82bfe83a79b4a Mon Sep 17 00:00:00 2001 From: Marc Koch Date: Mon, 22 Sep 2025 11:03:40 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=8A=20add=20logging=20module=20to=20na?= =?UTF-8?q?nodjango=20app?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/booking.py | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/src/booking.py b/src/booking.py index 22ff441..a88fc25 100644 --- a/src/booking.py +++ b/src/booking.py @@ -1,3 +1,4 @@ +import logging import os import secrets from datetime import datetime @@ -17,21 +18,28 @@ from ics import Calendar as ICS_Calendar, Event as ICS_Event from nanodjango import Django from shortuuid.django_fields import ShortUUIDField +from mylogger.logger import setup_logging + DEBUG = os.getenv("DJANGO_DEBUG", False) SECRET_KEY = os.getenv("DJANGO_SECRET_KEY") \ if os.getenv("DJANGO_SECRET_KEY") \ else secrets.token_hex(40) if DEBUG else None BASE_DIR = Path(__file__).resolve().parent -DATA_DIR = Path(os.getenv("DJANGO_DATA_DIR", BASE_DIR.parent / "data")) +DATA_DIR = Path(os.getenv("DJANGO_DATA_DIR", "/data")) +FILE_LOG_LEVEL = os.getenv("FILE_LOG_LEVEL", "INFO") +STDOUT_LOG_LEVEL = os.getenv("STDOUT_LOG_LEVEL", "DEBUG") +LOG_DIR = os.getenv("LOG_DIR", "/data/room-booking.log.jsonl") +LOGROTATE_BACKUP_COUNT = int(os.getenv("LOGROTATE_BACKUP_COUNT", 6)) +LOGROTATE_MAX_BYTES = int(os.getenv("LOGROTATE_MAX_BYTES", 10 * 1024 * 1024)) -if DEBUG: - print(f"DEBUG mode is {'on' if DEBUG else 'off'}") - print(f"BASE_DIR: {BASE_DIR}") - print(f"DATA_DIR: {DATA_DIR}") +setup_logging(file_log_level=FILE_LOG_LEVEL, + stdout_log_level=STDOUT_LOG_LEVEL, + logdir=LOG_DIR) +logger = logging.getLogger(__name__) # Check if all required values are set -if not SECRET_KEY and not DEBUG: - print("DJANGO_SECRET_KEY is not set") +if not SECRET_KEY: + logger.exception("DJANGO_SECRET_KEY is not set") exit(1) ALLOWED_HOSTS = [host.strip() for host in @@ -44,9 +52,8 @@ CSRF_TRUSTED_ORIGINS = [ for host in ALLOWED_HOSTS ] -if DEBUG: - print(f"ALLOWED_HOSTS: {ALLOWED_HOSTS}") - print(f"CSRF_TRUSTED_ORIGINS: {CSRF_TRUSTED_ORIGINS}") +logger.debug(f"ALLOWED_HOSTS: {ALLOWED_HOSTS}") +logger.debug(f"CSRF_TRUSTED_ORIGINS: {CSRF_TRUSTED_ORIGINS}") # Initialise nanodjango app = Django( @@ -292,7 +299,7 @@ class PriorityEventToken(models.Model): try: uuid = UUID(uuid, version=4) except ValueError: - print(f"Failed to decode UUID {uuid}") + logger.exception(f"Failed to decode UUID {uuid}") return False if not self.is_used: @@ -311,11 +318,11 @@ class PriorityEventToken(models.Model): try: uuid = UUID(uuid, version=4) except ValueError: - print(f"Failed to decode UUID {uuid}") + logger.exception(f"Failed to decode UUID {uuid}") return False if not self.signature: - print(f"No signature found for token '{self.token}'") + logger.exception(f"No signature found for token '{self.token}'") return False return self._validate(uuid, self.signature) @@ -339,7 +346,7 @@ class PriorityEventToken(models.Model): try: return signer.unsign(signature) == uuid.__str__() except BadSignature as e: - print(e) + logger.exception(f"Bad signature: {e}") return False def __str__(self):