import logging import os import json import socket import sys LOG_LEVEL = os.getenv('LOG_LEVEL', 'DEBUG') LOG_FORMAT = os.getenv('LOG_FORMAT', 'human') LOG_PATTERN = os.getenv('LOG_PATTERN', '%(asctime)s - %(levelname)s - %(message)s') LOG_EXTRA = os.getenv('LOG_EXTRA', '').split(',') class JsonFormatter(logging.Formatter): def format(self, record): log_record = { 'name': record.name, 'msg': record.getMessage(), 'levelname': record.levelname, 'levelno': record.levelno, 'pathname': record.pathname, 'filename': record.filename, 'module': record.module, 'lineno': record.lineno, 'funcName': record.funcName, 'created': record.created, 'msecs': record.msecs, 'relativeCreated': record.relativeCreated, 'thread': record.thread, 'threadName': record.threadName, 'processName': record.processName, 'process': record.process, 'hostname': socket.gethostname(), 'pid': record.process } for extra in LOG_EXTRA: log_record[extra] = getattr(record, extra, None) return json.dumps(log_record) # Configurazione del logger logger = logging.getLogger('logtest') logger.setLevel(LOG_LEVEL) # Handler per log in formato JSON json_handler = logging.StreamHandler(sys.stdout) json_handler.setFormatter(JsonFormatter()) # Handler per log leggibile human_readable_handler = logging.StreamHandler(sys.stdout) human_formatter = logging.Formatter( LOG_PATTERN ) human_readable_handler.setFormatter(human_formatter) # Aggiungere gli handler al logger if LOG_FORMAT == 'json': logger.addHandler(json_handler) else: logger.addHandler(human_readable_handler)