66 lines
2.3 KiB
Python
66 lines
2.3 KiB
Python
import logging
|
|
import logging.config
|
|
import logging.handlers
|
|
import os
|
|
import sys
|
|
import time
|
|
from datetime import datetime
|
|
|
|
|
|
class FilterInfo:
|
|
def filter(self, rec):
|
|
return rec.levelno <= logging.INFO
|
|
|
|
|
|
formatter = logging.Formatter('[%(asctime)s] %(levelname)s :: %(name)s -> %(message)s', datefmt="%d.%m.%Y %H:%M:%S")
|
|
name = "bot"
|
|
# As the core is able to host multiple bots out of the same directory, filtering the logs only sounds reasonable.
|
|
# So we're saving the logs into ./logs/##bot_name##/
|
|
if len(sys.argv) > 1:
|
|
name = sys.argv[1]
|
|
try:
|
|
os.mkdir(f"./logs/{name}")
|
|
except FileExistsError as error:
|
|
pass
|
|
|
|
# Rotate logs at 0 a.m. on Monday, GMT-0
|
|
file_handler = logging.handlers.TimedRotatingFileHandler(f"./logs/{name}/bot.log",
|
|
when='W6', utc=True,
|
|
backupCount=1000, encoding="utf-8")
|
|
file_handler.setFormatter(formatter)
|
|
|
|
# Fix time display => UTC-0
|
|
logging.Formatter.converter = lambda *args: datetime.utcnow().timetuple()
|
|
|
|
console_out = logging.StreamHandler(sys.stdout)
|
|
console_out.setFormatter(formatter)
|
|
# noinspection PyTypeChecker
|
|
console_out.addFilter(FilterInfo())
|
|
|
|
console_err = logging.StreamHandler(sys.stderr)
|
|
console_err.setFormatter(formatter)
|
|
console_err.setLevel(logging.WARN)
|
|
|
|
logging.root.setLevel(logging.INFO)
|
|
logging.root.addHandler(file_handler)
|
|
logging.root.addHandler(console_out)
|
|
logging.root.addHandler(console_err)
|
|
|
|
current_time = int(time.time())
|
|
# noinspection PyUnresolvedReferences
|
|
rollover_time = file_handler.computeRollover(current_time)
|
|
logging.info("Next log rollover has been scheduled for " + str(datetime.utcfromtimestamp(rollover_time)))
|
|
|
|
# reduce discord spam
|
|
# logging.getLogger("websockets").setLevel(logging.INFO)
|
|
# logging.getlogger("discord").setLevel(logging.INFO)
|
|
|
|
# Supress Spam generated by using TOR
|
|
# [used in: character_history_service.py & tower_service.py
|
|
logging.getLogger("torpy.stream").setLevel(logging.WARN)
|
|
logging.getLogger("torpy.guard").setLevel(logging.WARN)
|
|
logging.getLogger("torpy.consesus").setLevel(logging.WARN)
|
|
logging.getLogger("torpy.circuit").setLevel(logging.WARN)
|
|
logging.getLogger("torpy.cache_storage").setLevel(logging.WARN)
|
|
logging.getLogger("torpy.documents.network_status").setLevel(logging.WARN)
|