Skip to content

Instantly share code, notes, and snippets.

@therealzanfar
Last active October 31, 2023 20:21
Show Gist options
  • Save therealzanfar/8ea6d576f6caa0cc613dd1b634a236d9 to your computer and use it in GitHub Desktop.
Save therealzanfar/8ea6d576f6caa0cc613dd1b634a236d9 to your computer and use it in GitHub Desktop.
VSCode Snippets for Python Logging
"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"
},
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