commit 16b9829a2ce17673df699cbb6e6342062cd489e1 Author: enne2 Date: Wed Oct 23 13:29:21 2024 +0200 first commit diff --git a/.env b/.env new file mode 100644 index 0000000..4d94bed --- /dev/null +++ b/.env @@ -0,0 +1 @@ +LOG_LEVEL=DEBUG \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ed8ebf5 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +__pycache__ \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/lib/__init__.py b/lib/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/lib/log.py b/lib/log.py new file mode 100644 index 0000000..dd98c27 --- /dev/null +++ b/lib/log.py @@ -0,0 +1,41 @@ +import logging +import os +import json +import socket + +class JsonFormatter(logging.Formatter): + def format(self, record): + log_record = { + 'timestamp': self.formatTime(record, self.datefmt), + 'level': record.levelname, + 'message': record.getMessage(), + 'name': record.name, + 'filename': record.filename, + 'funcName': record.funcName, + 'lineno': record.lineno, + 'pathname': record.pathname, + 'hostname': socket.gethostname() + } + # Merging additional fields from record + if hasattr(record, 'extra'): + log_record.update(record.extra) + + return json.dumps(log_record) + +def setup_logger(name): + logger = logging.getLogger(name) + logger.setLevel(os.getenv('LOG_LEVEL', logging.INFO)) + + # Console Handler + console_handler = logging.StreamHandler() + console_handler.setLevel(logging.DEBUG) + + # Formatter + formatter = JsonFormatter() + console_handler.setFormatter(formatter) + + # Adding handler to the logger + if not logger.hasHandlers(): + logger.addHandler(console_handler) + + return logger diff --git a/main.py b/main.py new file mode 100644 index 0000000..310bd45 --- /dev/null +++ b/main.py @@ -0,0 +1,15 @@ +from lib import log +from more import more_operations, More +# Utilizzo del logger +logger = log.setup_logger(__name__) + +logger.debug('Questo è un messaggio di debug') +logger.info('Questo è un messaggio informativo') +logger.warning('Questo è un messaggio di avvertimento', extra={'ansia': 'molta'}) +logger.error('Questo è un messaggio di errore', extra={'cause': 'non so'}) +logger.critical('Questo è un messaggio critico', extra={'ansia' :'estrema'}) + +more_operations() + +with More() as more: + more.do_something() \ No newline at end of file diff --git a/more.py b/more.py new file mode 100644 index 0000000..25b6b22 --- /dev/null +++ b/more.py @@ -0,0 +1,35 @@ +from lib import log + +# Utilizzo del logger +logger = log.setup_logger(__name__) + +def more_operations(): + logger.debug('Questo è un messaggio di debug') + logger.info('Questo è un messaggio informativo') + logger.warning('Questo è un messaggio di avvertimento') + logger.error('Questo è un messaggio di errore') + logger.critical('Questo è un messaggio critico') + + +class More(): + def __init__(self): + pass + + def __enter__(self): + # Codice da eseguire all'inizio del contesto + logger.info('Entrato nel contesto di More') + return self + + def __exit__(self, exc_type, exc_value, traceback): + # Codice da eseguire alla fine del contesto + logger.info('Uscito dal contesto di More') + if exc_type: + logger.error(f'Errore: {exc_value}') + return False # Ritorna False per propagare l'eccezione, True per sopprimerla + + def do_something(self): + logger.debug('Questo è un messaggio di debug') + logger.info('Questo è un messaggio informativo') + logger.warning('Questo è un messaggio di avvertimento') + logger.error('Questo è un messaggio di errore') + logger.critical('Questo è un messaggio critico') \ No newline at end of file