From a9df67d7877938fcde2ef876edda41d0c7cdb801 Mon Sep 17 00:00:00 2001 From: Sergi Delgado Segura Date: Mon, 16 Dec 2019 19:44:50 +0100 Subject: [PATCH] Properly fromats console logs --- apps/cli/__init__.py | 2 +- common/logger.py | 25 ++++++++++++++++++------- pisa/__init__.py | 2 +- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/apps/cli/__init__.py b/apps/cli/__init__.py index c7c8f1a..2c9e149 100644 --- a/apps/cli/__init__.py +++ b/apps/cli/__init__.py @@ -28,6 +28,6 @@ c_logger.setLevel(logging.INFO) ch = logging.StreamHandler() ch.setLevel(logging.INFO) -ch_formatter = logging.Formatter("%(asctime)s %(message)s", "%Y-%m-%d %H:%M:%S") +ch_formatter = logging.Formatter("%(asctime)s %(message)s.", "%Y-%m-%d %H:%M:%S") ch.setFormatter(ch_formatter) c_logger.addHandler(ch) diff --git a/common/logger.py b/common/logger.py index 237eafd..ac683c2 100644 --- a/common/logger.py +++ b/common/logger.py @@ -1,5 +1,5 @@ -import time import json +from datetime import datetime from pisa import f_logger, c_logger @@ -7,10 +7,10 @@ from pisa import f_logger, c_logger class _StructuredMessage: def __init__(self, message, **kwargs): self.message = message - self.time = time.asctime() + self.time = datetime.now().strftime("%d/%m/%Y %H:%M:%S") self.kwargs = kwargs - def __str__(self): + def to_dict(self): return {**self.kwargs, "message": self.message, "time": self.time} @@ -26,13 +26,24 @@ class Logger: self.actor = actor def _add_prefix(self, msg): - return msg if self.actor is None else "[{}] {}".format(self.actor, msg) + return msg if self.actor is None else "[{}]: {}".format(self.actor, msg) def _create_console_message(self, msg, **kwargs): - return _StructuredMessage(self._add_prefix(msg), actor=self.actor, **kwargs).message + s_message = _StructuredMessage(self._add_prefix(msg), **kwargs).to_dict() + message = "{} {}".format(s_message["time"], s_message["message"]) - def _create_file_message(self, msg, **kwargs): - return json.dumps(_StructuredMessage(msg, actor=self.actor, **kwargs).__str__()) + # s_message will always have at least two items (message and time). + if len(s_message) > 2: + params = "".join("{}={}, ".format(k, v) for k, v in s_message.items() if k not in ["message", "time"]) + + # Remove the extra 2 characters (space and comma) and add all data to the final message. + message += " ({})".format(params[:-2]) + + return message + + @staticmethod + def _create_file_message(msg, **kwargs): + return json.dumps(_StructuredMessage(msg, **kwargs).to_dict()) def info(self, msg, **kwargs): """ diff --git a/pisa/__init__.py b/pisa/__init__.py index f273b19..dd06913 100644 --- a/pisa/__init__.py +++ b/pisa/__init__.py @@ -22,6 +22,6 @@ c_logger.setLevel(logging.INFO) ch = logging.StreamHandler() ch.setLevel(logging.INFO) -ch_formatter = logging.Formatter("%(asctime)s %(message)s", "%Y-%m-%d %H:%M:%S") +ch_formatter = logging.Formatter("%(message)s.", "%Y-%m-%d %H:%M:%S") ch.setFormatter(ch_formatter) c_logger.addHandler(ch)