diff --git a/requirements.txt b/requirements.txt index a817154..b126dcf 100644 --- a/requirements.txt +++ b/requirements.txt @@ -17,5 +17,6 @@ propcache==0.4.1 pycares==4.11.0 pycparser==2.23 PyMySQL==1.1.2 +python-json-logger==4.0.0 typing_extensions==4.15.0 yarl==1.22.0 diff --git a/src/logger_handler.py b/src/logger_handler.py index 3911736..c504d1e 100644 --- a/src/logger_handler.py +++ b/src/logger_handler.py @@ -1,5 +1,11 @@ -import logging import os +import logging + +try: + from pythonjsonlogger import jsonlogger + JSON_LOGGING = True +except ImportError: + JSON_LOGGING = False LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO").upper() if LOG_LEVEL not in {"ERROR", "DEBUG", "INFO", "WARNING", "CRITICAL"}: @@ -9,9 +15,14 @@ def setup_logger(name: str) -> logging.Logger: logger = logging.getLogger(name) if not logger.handlers: handler = logging.StreamHandler() - formatter = logging.Formatter( - '%(asctime)s - %(name)s - %(levelname)s - %(message)s' - ) + if JSON_LOGGING: + formatter = jsonlogger.JsonFormatter( + "%(asctime)s %(name)s %(levelname)s %(message)s" + ) + else: + formatter = logging.Formatter( + "%(asctime)s - %(name)s - %(levelname)s - %(message)s" + ) handler.setFormatter(formatter) logger.addHandler(handler) logger.setLevel(getattr(logging, LOG_LEVEL))