46d0ba3634
Fixed a bug related to logging [log dir does not exist on master, and needs to get created on first startup] Added !prefadmin <user> to view preferences of players, and change them Orgrank & name will be hidden in !alts, if the character is not in an org Page prefix & suffix are now being relayed [for example, it affects !online Fixed !perks Added comments regarding external API's.
45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
import logging
|
|
import logging.handlers
|
|
import re
|
|
import traceback
|
|
|
|
|
|
class Logger:
|
|
def __init__(self, name):
|
|
self.logger = logging.getLogger(name)
|
|
|
|
def warning(self, msg, obj: Exception = None):
|
|
self.logger.warning(self.format_message(msg, obj))
|
|
|
|
def info(self, msg, obj: Exception = None):
|
|
self.logger.info(self.format_message(msg, obj))
|
|
|
|
def error(self, msg, obj: Exception = None):
|
|
self.logger.error(self.format_message(msg, obj))
|
|
|
|
def debug(self, msg, obj: Exception = None):
|
|
self.logger.debug(self.format_message(msg, obj))
|
|
|
|
def log_chat(self, conn_id, channel, sender, msg):
|
|
if sender:
|
|
self.info(f"({conn_id}) [{channel}] {sender}: {self.format_chat_message(msg)}")
|
|
else:
|
|
self.info(f"({conn_id}) [{channel}] {self.format_chat_message(msg)}")
|
|
|
|
def log_tell(self, conn_id, direction, sender, msg):
|
|
self.info(f"({conn_id}) {direction.capitalize()} {sender}: {self.format_chat_message(msg)}")
|
|
|
|
def format_chat_message(self, msg):
|
|
msg = re.sub(r"<a\s+href=\".+?[^\\]\">", "[link]", msg, flags=re.UNICODE | re.DOTALL)
|
|
msg = re.sub(r"<a\s+href='.+?'>", "[link]", msg, flags=re.UNICODE | re.DOTALL)
|
|
msg = re.sub(r"<font\s+.+?>", "", msg, flags=re.UNICODE)
|
|
msg = re.sub("</font>", "", msg, flags=re.UNICODE)
|
|
msg = re.sub("</a>", "[/link]", msg, flags=re.UNICODE)
|
|
return msg
|
|
|
|
def format_message(self, msg, obj):
|
|
if obj:
|
|
return msg + "\n" + traceback.format_exc()
|
|
else:
|
|
return msg
|