You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.8 KiB
58 lines
1.8 KiB
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) |