FileToLink / Thunder /utils /logger.py
Fyaz Mohammed
3
e7261d3
Raw
History Blame Contribute Delete
1.21 kB
# Thunder/utils/logger.py
import logging
from logging.handlers import RotatingFileHandler, QueueHandler, QueueListener
import os
import queue
import atexit
import sys
LOG_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'logs')
os.makedirs(LOG_DIR, exist_ok=True)
LOG_FILE = os.path.join(LOG_DIR, 'bot.txt')
logging._srcfile = None
logging.logThreads = 0
logging.logProcesses = 0
log_queue = queue.Queue(maxsize=10000)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler = RotatingFileHandler(LOG_FILE, maxBytes=10*1024*1024, backupCount=5, encoding='utf-8')
file_handler.setFormatter(formatter)
console_handler = logging.StreamHandler(stream=sys.__stdout__)
console_handler.setFormatter(formatter)
console_handler.stream.reconfigure(encoding='utf-8', errors='replace')
listener = QueueListener(log_queue, file_handler, console_handler, respect_handler_level=True)
listener.start()
logger = logging.getLogger('ThunderBot')
logger.setLevel(logging.INFO)
logger.propagate = False
logger.addHandler(QueueHandler(log_queue))
atexit.register(listener.stop)
__all__ = ['logger', 'LOG_FILE']