mirror of
https://github.com/wolfswolke/DeathGarden_API_Rebirth.git
synced 2026-07-07 20:24:11 -05:00
66 lines
2.6 KiB
Python
66 lines
2.6 KiB
Python
import logging
|
|
import sys
|
|
import graypy
|
|
import json
|
|
import traceback
|
|
from colorlog import ColoredFormatter
|
|
|
|
|
|
class Logger:
|
|
def __init__(self):
|
|
self.my_logger = logging.getLogger('deathgarden_api')
|
|
self.dynamic_use_graylog = False
|
|
|
|
def setup_graylog(self, use_graylog, graylog_server):
|
|
self.dynamic_use_graylog = use_graylog
|
|
self.my_logger.setLevel(logging.DEBUG)
|
|
if self.dynamic_use_graylog:
|
|
handler = graypy.GELFUDPHandler(graylog_server, 12201)
|
|
self.my_logger.addHandler(handler)
|
|
else:
|
|
print("Graylog disabled. Not sending any Logs.")
|
|
self.graylog_logger(level="info", handler="logging_server_Event", message={"event": "api started"})
|
|
|
|
def graylog_logger(self, level, handler, message):
|
|
use_graylog = True
|
|
if use_graylog:
|
|
formatter = ColoredFormatter(
|
|
"%(log_color)s%(asctime)s %(levelname)-8s%(reset)s %(message)s",
|
|
datefmt="%Y-%m-%d %H:%M:%S",
|
|
reset=True,
|
|
log_colors={
|
|
'DEBUG': 'blue',
|
|
'INFO': 'white',
|
|
'WARNING': 'yellow',
|
|
'ERROR': 'red',
|
|
'CRITICAL': 'red,bg_white',
|
|
}
|
|
)
|
|
console_handler = logging.StreamHandler()
|
|
console_handler.setLevel(logging.DEBUG)
|
|
console_handler.setFormatter(formatter)
|
|
self.my_logger.addHandler(console_handler)
|
|
log_methods = {"debug": self.my_logger.debug, "warning": self.my_logger.warning,
|
|
"error": self.my_logger.error, "info": self.my_logger.info,
|
|
"critical": self.my_logger.critical}
|
|
log_method = log_methods.get(level)
|
|
if log_method:
|
|
try:
|
|
message = json.dumps({"level": level, "handler": handler, "message": message})
|
|
except TypeError:
|
|
message = f"{{\"level\": \"{level}\", \"handler\": \"{handler}\", \"message\": \"{str(message)}\"}}"
|
|
if level == "error":
|
|
exc_type, exc_value, exc_traceback = sys.exc_info()
|
|
tb_str = traceback.format_exception(exc_type, exc_value, exc_traceback)
|
|
message = f"{message}\n{''.join(tb_str)}"
|
|
|
|
log_method(message)
|
|
else:
|
|
print("ERROR: No valid log level specified.")
|
|
self.my_logger.removeHandler(console_handler)
|
|
else:
|
|
print("Graylog disabled. Not sending any Logs.")
|
|
|
|
|
|
logger = Logger()
|