import json
import logging.config
from typing import cast, TYPE_CHECKING
import atexit
import pathlib
if TYPE_CHECKING:
from utils.logger import QueueHandlerWithListener
class Logger:
def __init__(self):
self.logger = logging.getLogger("test")
config_file = pathlib.Path("config/logging.json")
with open(config_file, 'r') as file:
config = json.load(file)
logging.config.dictConfig(config)
queue_handler = logging.getHandlerByName("queue_handler")
if queue_handler is not None:
queue_handler = cast("QueueHandlerWithListener", queue_handler)
queue_handler.listener.start()
atexit.register(queue_handler.listener.stop)
def get_logger(self):
return self.logger
This is the pyi:
import logging
import logging.handlers
class Logger:
def __init__(self) -> None: ...
def get_logger(self) -> logging.Logger: ...
class QueueHandlerWithListener(logging.handlers.QueueHandler):
listener: logging.handlers.QueueListener
so I came together with this because if I just didn't have the cast vscode would highlight listener. Curious if there is a better way.