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.
 

41 lines
1.2 KiB

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