Browse Source

first commit

master
Matteo Benedetto 1 year ago
commit
16b9829a2c
  1. 1
      .env
  2. 1
      .gitignore
  3. 0
      README.md
  4. 0
      lib/__init__.py
  5. 41
      lib/log.py
  6. 15
      main.py
  7. 35
      more.py

1
.env

@ -0,0 +1 @@
LOG_LEVEL=DEBUG

1
.gitignore vendored

@ -0,0 +1 @@
__pycache__

0
lib/__init__.py

41
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

15
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()

35
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')
Loading…
Cancel
Save