diff --git a/apps/cli/__init__.py b/apps/cli/__init__.py index c7f8d90..9685ba2 100644 --- a/apps/cli/__init__.py +++ b/apps/cli/__init__.py @@ -1,11 +1,13 @@ import logging +import json +import time # PISA-SERVER DEFAULT_PISA_API_SERVER = 'btc.pisa.watch' DEFAULT_PISA_API_PORT = 9814 # PISA-CLI -CLIENT_LOG_FILE = 'pisa.log' +CLIENT_LOG_FILE = 'pisa-cli.log' # CRYPTO SUPPORTED_HASH_FUNCTIONS = ["SHA256"] @@ -18,3 +20,36 @@ logging.basicConfig(format='%(message)s', level=logging.INFO, handlers=[ logging.FileHandler(CLIENT_LOG_FILE), logging.StreamHandler() ]) + + +class StructuredMessage(object): + def __init__(self, message, **kwargs): + self.message = message + self.time = time.asctime() + self.kwargs = kwargs + + def __str__(self): + return json.dumps({**self.kwargs, "message": self.message, "time": self.time}) + + +class Logger(object): + def __init__(self, actor=None): + self.actor = actor + + def _add_prefix(self, msg): + return msg if self.actor is None else "[{}] {}".format(self.actor, msg) + + def info(self, msg, **kwargs): + logging.info(StructuredMessage(self._add_prefix(msg), actor=self.actor, **kwargs)) + + def debug(self, msg, **kwargs): + logging.debug(StructuredMessage(self._add_prefix(msg), actor=self.actor, **kwargs)) + + def error(self, msg, **kwargs): + logging.error(StructuredMessage(self._add_prefix(msg), actor=self.actor, **kwargs)) + + def warning(self, msg, **kwargs): + logging.warning(StructuredMessage(self._add_prefix(msg), actor=self.actor, **kwargs)) + + +logger = Logger("Client") \ No newline at end of file diff --git a/apps/cli/pisa-cli.py b/apps/cli/pisa-cli.py index 9b51ee8..4be320e 100644 --- a/apps/cli/pisa-cli.py +++ b/apps/cli/pisa-cli.py @@ -9,22 +9,20 @@ from binascii import unhexlify from getopt import getopt, GetoptError from requests import ConnectTimeout, ConnectionError + from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.serialization import load_pem_public_key from cryptography.hazmat.primitives.asymmetric import ec from cryptography.exceptions import InvalidSignature, UnsupportedAlgorithm -from pisa.logger import Logger -from pisa.appointment import Appointment - from apps.cli.blob import Blob from apps.cli.help import help_add_appointment, help_get_appointment +from apps.cli import logger from apps.cli import DEFAULT_PISA_API_SERVER, DEFAULT_PISA_API_PORT, PISA_PUBLIC_KEY -HTTP_OK = 200 -logger = Logger("Client") +HTTP_OK = 200 pisa_public_key = None