diff options
| author | user@node5.net <user@node5.net> | 2025-12-07 21:43:04 +0100 |
|---|---|---|
| committer | user@node5.net <user@node5.net> | 2025-12-07 21:43:04 +0100 |
| commit | 20ba90699808e6d9a274171593ab22327cd8a613 (patch) | |
| tree | 18b49771b267693e46779dfe75caa064fb89b91f /web_interface | |
| parent | 7f37e43c940cdb7a9adf38021331a97cf7664b9b (diff) | |
Custom logging
Diffstat (limited to 'web_interface')
| -rw-r--r-- | web_interface/drinks_machine/ColorLogFormatter.py | 60 | ||||
| -rw-r--r-- | web_interface/drinks_machine/settings.py | 39 |
2 files changed, 99 insertions, 0 deletions
diff --git a/web_interface/drinks_machine/ColorLogFormatter.py b/web_interface/drinks_machine/ColorLogFormatter.py new file mode 100644 index 0000000..939d591 --- /dev/null +++ b/web_interface/drinks_machine/ColorLogFormatter.py @@ -0,0 +1,60 @@ +import logging + + +class ColorFormatter(logging.Formatter): + grey = "\x1b[90;20m" + cyan = "\x1b[96;20m" + yellow = "\x1b[33;20m" + red = "\x1b[31;20m" + bold_red = "\x1b[31;1m" + reset = "\x1b[0m" + format = "%(asctime)s,%(msecs)03d %(levelname)-8s %(filename)s:%(lineno)d %(message)s" + + FORMATS = { + logging.DEBUG: grey + format + reset, + logging.INFO: cyan + format + reset, + logging.WARNING: yellow + format + reset, + logging.ERROR: red + format + reset, + logging.CRITICAL: bold_red + format + reset, + } + + def format(self, record): + log_fmt = self.FORMATS.get(record.levelno) + formatter = logging.Formatter(log_fmt) + formatted = formatter.format(record) + return formatted + + +class SysLogColorFormatter(logging.Formatter): + grey = "\x1b[90;20m" + cyan = "\x1b[96;20m" + yellow = "\x1b[33;20m" + red = "\x1b[31;20m" + bold_red = "\x1b[31;1m" + reset = "\x1b[0m" + format = "%(levelname)-8s %(filename)s:%(lineno)d %(message)s" + + FORMATS = { + logging.DEBUG: grey + format + reset, + logging.INFO: cyan + format + reset, + logging.WARNING: yellow + format + reset, + logging.ERROR: red + format + reset, + logging.CRITICAL: bold_red + format + reset, + } + + def format(self, record): + log_fmt = self.FORMATS.get(record.levelno) + formatter = logging.Formatter(log_fmt) + formatted = formatter.format(record) + return formatted + + +""" Example how to log in other modules: +logger = logging.getLogger(__name__) # Instantiate a logger to be used in this module + +logger.debug("debug message") +logger.info("info message") +logger.warning("warning message") +logger.error("error message") +logger.critical("critical message") +""" diff --git a/web_interface/drinks_machine/settings.py b/web_interface/drinks_machine/settings.py index b63d78f..aae7e99 100644 --- a/web_interface/drinks_machine/settings.py +++ b/web_interface/drinks_machine/settings.py @@ -12,6 +12,7 @@ https://docs.djangoproject.com/en/6.0/ref/settings/ from pathlib import Path import os +import sys from django.core.management.utils import get_random_secret_key @@ -147,3 +148,41 @@ STATIC_URL = '/static/' #STATIC_ROOT = os.path.join(BASE_DIR, "static") STATICFILES_DIRS = [BASE_DIR / "static"] +LOGGING = { + "version": 1, + "disable_existing_loggers": False, + "handlers": { + "console": { + "stream": sys.stdout, + "class": "logging.StreamHandler", + "formatter": "verbose", + }, + "syslog": { + "address": "/dev/log", + "class": "logging.handlers.SysLogHandler", + "formatter": "verbose", + }, + }, + "root": { + "handlers": ["console" if DEBUG is True else "syslog"], + "level": "DEBUG", + }, + "loggers": { + "django": { + "handlers": ["console" if DEBUG is True else "syslog"], + "level": "INFO", + "propagate": False, + }, + }, + "formatters": { + "verbose": { + "()": ( + "drinks_machine.ColorLogFormatter.ColorFormatter" + if DEBUG is True + else "drinks_machine.ColorLogFormatter.SysLogColorFormatter" + ), + "format": "{asctime:s} {levelname:8s} {filename}:{lineno:d} \t {message}", + "style": "{", + }, + }, +} |
