46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
import logging
|
|
|
|
from rich import logging as rlogging
|
|
|
|
|
|
logger = logging.getLogger("payphone")
|
|
|
|
|
|
def _get_handler(process_name: str, module: str | None = None) -> None:
|
|
"""Generates a handler for the given process name and module.
|
|
|
|
Args:
|
|
process_name (str): The process name.
|
|
module (str | None, optional): The module inside the process. Defaults to None.
|
|
"""
|
|
|
|
fmt = f"[blue][{process_name}{f": [green]{module}[/green]" if module is not None else ""}][/blue] %(message)s"
|
|
formatter = logging.Formatter(fmt)
|
|
|
|
handler = rlogging.RichHandler(
|
|
level=logging.INFO, markup=True, rich_tracebacks=True
|
|
)
|
|
handler.setFormatter(formatter)
|
|
|
|
return handler
|
|
|
|
|
|
def setup(process_name: str):
|
|
"""Sets up pycord logging.
|
|
|
|
Args:
|
|
process_name (str): The name of the process.
|
|
"""
|
|
|
|
logging.basicConfig(level=logging.DEBUG, handlers=[_get_handler(process_name)])
|
|
|
|
discord_logger = logging.getLogger("discord")
|
|
discord_logger.handlers.clear()
|
|
discord_logger.addHandler(_get_handler(process_name, "discord"))
|
|
discord_logger.propagate = False
|
|
|
|
asyncio_logger = logging.getLogger("asyncio")
|
|
asyncio_logger.handlers.clear()
|
|
asyncio_logger.addHandler(_get_handler(process_name, "asyncio"))
|
|
asyncio_logger.propagate = False
|