Newer
Older
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Logging system for qim3d\n",
"\n",
"Using proper logging instead of print statements is a recommended practice.\n",
"While print statements can be helpful for quick debugging, logging provides a more powerful and versatile approach. Logging allows for better control over output, with options to configure log levels, filter messages, and redirect output to different destinations. \n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "a31b2245",
"metadata": {
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"import qim3d\n",
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"warning level message\n",
"error level message\n",
"critical level message\n"
]
}
],
"source": [
"# Here we test by sending one message for each level\n",
"log.debug('debug level message')\n",
"log.info('info level message')\n",
"log.warning('warning level message')\n",
"log.error('error level message')\n",
"log.critical('critical level message')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "b0856333",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"debug level message\n",
"info level message\n",
"warning level message\n",
"error level message\n",
"critical level message\n"
]
}
],
"source": [
"# Change the level to debug\n",
"\n",
"# Now all the levels get logged\n",
"log.debug('debug level message')\n",
"log.info('info level message')\n",
"log.warning('warning level message')\n",
"log.error('error level message')\n",
"log.critical('critical level message')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"error level message\n",
"critical level message\n"
]
}
],
"source": [
"# Change the level to error\n",
"\n",
"# And now only above ERROR is shown\n",
"log.debug('debug level message')\n",
"log.info('info level message')\n",
"log.warning('warning level message')\n",
"log.error('error level message')\n",
"log.critical('critical level message')"
]
},
{
"cell_type": "code",
"execution_count": 5,
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
"id": "75af4473",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"info level message\n",
"warning level message\n",
"error level message\n",
"critical level message\n"
]
}
],
"source": [
"# Change the level back to info\n",
"qim3d.utils._logger.level(\"info\")\n",
"\n",
"# And now only above INFO is shown again\n",
"log.debug('debug level message')\n",
"log.info('info level message')\n",
"log.warning('warning level message')\n",
"log.error('error level message')\n",
"log.critical('critical level message')"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "af3cc812",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO 20327955.py:6 info level message\n",
"WARNING 20327955.py:7 warning level message\n",
"ERROR 20327955.py:8 error level message\n",
"CRITICAL 20327955.py:9 critical level message\n"
]
}
],
"source": [
"# We can increase the level of detail\n",
"log.debug('debug level message')\n",
"log.info('info level message')\n",
"log.warning('warning level message')\n",
"log.error('error level message')\n",
"log.critical('critical level message')"
]
},
{
"cell_type": "code",
"id": "d7239b1b",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"error level message\n",
"critical level message\n"
]
}
],
"source": [
"# We can switch back to the simple output mode\n",
"log.debug('debug level message')\n",
"log.info('info level message')\n",
"log.warning('warning level message')\n",
"log.error('error level message')\n",
"log.critical('critical level message')"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"DEBUG 3380703693.py:5 debug level message\n",
"INFO 3380703693.py:6 info level message\n",
"WARNING 3380703693.py:7 warning level message\n",
"ERROR 3380703693.py:8 error level message\n",
"CRITICAL 3380703693.py:9 critical level message\n"
]
}
],
"source": [
"# Change back to detailed and DEBUG level\n",
"qim3d.utils._logger.set_detailed_output()\n",
"qim3d.utils._logger.level(\"debug\")\n",
"\n",
"log.debug('debug level message')\n",
"log.info('info level message')\n",
"log.warning('warning level message')\n",
"log.error('error level message')\n",
"log.critical('critical level message')"
]
}
],
"metadata": {
"kernelspec": {
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
}
},
"nbformat": 4,
"nbformat_minor": 5
}