Last active
October 31, 2023 20:21
-
-
Save therealzanfar/8ea6d576f6caa0cc613dd1b634a236d9 to your computer and use it in GitHub Desktop.
VSCode Snippets for Python Logging
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"logging setup": { | |
"prefix": "logsetup", | |
"body": [ | |
"import logging", | |
"from rich.logging import RichHandler", | |
"", | |
"def setup_logging(verbosity: int = 0, force: bool = False) -> None:", | |
"\t\"\"\"", | |
"\tSet up a root logger with console output.", | |
"", | |
"\tArgs:", | |
"\t\tverbosity (int, optional): The logging level; 0=Error, 1=Warning,", | |
"\t\t\t2=Info, 3+=Debug. Defaults to 0.", | |
"\t", | |
"\t\tforce (bool, optiona): Force the logging level to this value, even", | |
"\t\t\tif it's currently set to a more permissive value.\",", | |
"\t\"\"\"", | |
"", | |
"\tlogging_level = logging.ERROR", | |
"\tif verbosity == 1:", | |
"\t\tlogging_level = logging.WARNING", | |
"\telif verbosity == 2: # noqa: PLR2004", | |
"\t\tlogging_level = logging.INFO", | |
"\telif verbosity >= 3: # noqa: PLR2004", | |
"\t\tlogging_level = logging.DEBUG", | |
"", | |
"\tif len(logging.root.handlers) == 0:", | |
"\t\tlogging.basicConfig(", | |
"\t\t\tlevel=logging_level,", | |
"\t\t\tformat=\"%(message)s\",", | |
"\t\t\tdatefmt=\"[%x]\",", | |
"\t\t\thandlers=[RichHandler(rich_tracebacks=True)],", | |
"\t\t)", | |
"\t\tlogger = logging.getLogger(__name__)", | |
"\t\tlogger.info(f\"Logging Setup at {logging.getLevelName(logging_level)} level\")", | |
"", | |
"\telif logging.root.level > logging_level or force:" | |
"\t\tlogging.root.setLevel(logging_level)", | |
"", | |
"\t\tlogger = logging.getLogger(__name__)", | |
"\t\tlogger.info(f\"Logging updated to {logging.getLevelName(logging_level)} level\")", | |
"", | |
"\telse:", | |
"\t\tlogger = logging.getLogger(__name__)", | |
"\t\tlogger.debug(", | |
"\t\t\t\"Ignoring logging setup request: \"", | |
"\t\t\t\"handler already exists at desired or greater level\",", | |
"\t\t)", | |
"$0", | |
], | |
"description": "Insert setup_logging function" | |
}, | |
"Logger Initialization": { | |
"prefix": "logger", | |
"body": [ | |
"logger = logging.getLogger(__name__)$0" | |
], | |
"description": "Initialize a local logger" | |
}, | |
"Log Debug Message": { | |
"prefix": "logd", | |
"body": [ | |
"logger.debug(f\"${1:message}\")$0" | |
], | |
"description": "Log a Debug Message" | |
}, | |
"Log Info Message": { | |
"prefix": "logi", | |
"body": [ | |
"logger.info(f\"${1:message}\")$0" | |
], | |
"description": "Log an Informational Message" | |
}, | |
"Log Warning Message": { | |
"prefix": "logw", | |
"body": [ | |
"logger.warning(f\"${1:message}\")$0" | |
], | |
"description": "Log a Warning Message" | |
}, | |
"Log Error Message": { | |
"prefix": "loge", | |
"body": [ | |
"logger.error(f\"${1:message}\")", | |
"$0" | |
], | |
"description": "Log an Error Message" | |
}, |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def setup_logging(verbosity: int = 0, force: bool = False) -> None: | |
""" | |
Set up a root logger with console output. | |
Args: | |
verbosity (int, optional): The logging level; 0=Error, 1=Warning, | |
2=Info, 3+=Debug. Defaults to 0. | |
force (bool, optiona): Force the logging level to this value, even | |
if it's currently set to a more permissive value. | |
""" | |
logging_level = logging.ERROR | |
if verbosity == 1: | |
logging_level = logging.WARNING | |
elif verbosity == 2: # noqa: PLR2004 | |
logging_level = logging.INFO | |
elif verbosity >= 3: # noqa: PLR2004 | |
logging_level = logging.DEBUG | |
if len(logging.root.handlers) == 0: | |
logging.basicConfig( | |
level=logging_level, | |
format="%(message)s", | |
datefmt="[%x]", | |
handlers=[RichHandler(rich_tracebacks=True)], | |
) | |
logger = logging.getLogger(__name__) | |
logger.info(f"Logging Setup at {logging.getLevelName(logging_level)} level") | |
elif logging.root.level > logging_level or force: | |
logging.root.setLevel(logging_level) | |
logger = logging.getLogger(__name__) | |
logger.info(f"Logging updated to {logging.getLevelName(logging_level)} level") | |
else: | |
logger = logging.getLogger(__name__) | |
logger.debug( | |
"Ignoring logging setup request: " | |
"handler already exists at desired or greater level", | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment