"""Setup logging like Biz/Log.hs.""" # noqa: builtin-attribute-shadowing import logging import typing class LowerFormatter(logging.Formatter): """A logging formatter that formats logs how I like.""" def format(self: "LowerFormatter", record: typing.Any) -> typing.Any: """Use the format I like for logging.""" record.levelname = record.levelname.lower() return super(logging.Formatter, self).format(record) # type: ignore[misc] def setup() -> None: """Run this in your __main__ function.""" logging.basicConfig( level=logging.DEBUG, format="%(levelname)s: %(name)s: %(message)s", ) logging.addLevelName(logging.DEBUG, "dbug") logging.addLevelName(logging.ERROR, "fail") logging.addLevelName(logging.INFO, "info") logger = logging.getLogger(__name__) formatter = LowerFormatter() handler = logging.StreamHandler() handler.setFormatter(formatter) logger.addHandler(handler) if __name__ == "__main__": setup() logging.debug("i am doing testing")