{ "cells": [ { "cell_type": "markdown", "id": "ae2a75fe", "metadata": {}, "source": [ "# Logging system for qim3d\n", "\n", "Using proper logging instead of print statements is a recommended practice.\n", "\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", "from qim3d.utils._logger import log" ] }, { "cell_type": "code", "execution_count": 2, "id": "94022824", "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": [ "# Here we test by sending one message for each level\n", "# Note that DEBUG does not appear\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", "qim3d.utils._logger.level(\"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, "id": "eb542404", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "error level message\n", "critical level message\n" ] } ], "source": [ "# Change the level to error\n", "qim3d.utils._logger.level(\"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, "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", "qim3d.utils._logger.set_detailed_output()\n", "\n", "# Note that DEBUG is still not 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": 7, "id": "d7239b1b", "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": [ "# We can switch back to the simple output mode\n", "qim3d.utils._logger.set_simple_output()\n", "\n", "# Now the levels are back to simple 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", "execution_count": 8, "id": "eaceb5b6", "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": { "display_name": "qim3d", "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", "version": "3.10.14" } }, "nbformat": 4, "nbformat_minor": 5 }