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
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
|
|
|