Files
igncore/conf/logging_settings.py
T
Minidodo 46d0ba3634 Changed the string formatter from % to f"",
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.
2021-08-14 02:36:20 +02:00

71 lines
2.4 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", mode=4600)
except FileExistsError as error:
pass
try:
os.mkdir(f"./logs/{name}", mode=4600)
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)