Skip to content
Snippets Groups Projects
Logging.ipynb 5.45 KiB
Newer Older
  • Learn to ignore specific revisions
  • {
     "cells": [
      {
       "cell_type": "markdown",
       "id": "24c15e5d",
       "metadata": {},
       "source": [
        "# Logging system for qim3d\n",
        "Using proper logging instead of print statements is a recommended practice in software development for a variety of reasons. \n",
        "\n",
        "While print statements can be helpful for quick debugging, logging provides a more powerful and versatile approach. \n",
        "\n",
        "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",
        "log = qim3d.log"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 2,
       "id": "8a2b7c0e",
       "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",
        "# Note that DEBUG and INFO do 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.io.logger.set_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": "2824aa8a",
       "metadata": {},
       "outputs": [
        {
         "name": "stderr",
         "output_type": "stream",
         "text": [
          "error level message\n",
          "critical level message\n"
         ]
        }
       ],
       "source": [
        "# Change the level to error\n",
        "qim3d.io.logger.set_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": "af3cc812",
       "metadata": {},
       "outputs": [
        {
         "name": "stderr",
         "output_type": "stream",
         "text": [
          "ERROR     3224913348.py:8    error level message\n",
          "CRITICAL  3224913348.py:9    critical level message\n"
         ]
        }
       ],
       "source": [
        "# We can increase the level of detail\n",
        "qim3d.io.logger.set_detailed_output()\n",
        "\n",
        "# Note that DEBUG and INFO are 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": 6,
       "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",
        "qim3d.io.logger.set_simple_output()\n",
        "\n",
        "# Now we see all the levels on 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": 7,
       "id": "20857afc",
       "metadata": {},
       "outputs": [
        {
         "name": "stderr",
         "output_type": "stream",
         "text": [
          "DEBUG     4221232047.py:5    debug level message\n",
          "INFO      4221232047.py:6    info level message\n",
          "WARNING   4221232047.py:7    warning level message\n",
          "ERROR     4221232047.py:8    error level message\n",
          "CRITICAL  4221232047.py:9    critical level message\n"
         ]
        }
       ],
       "source": [
        "# Change back to detailed and DEBUG level\n",
        "qim3d.io.logger.set_detailed_output()\n",
        "qim3d.io.logger.set_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": "Python 3 (ipykernel)",
       "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.6"
      }
     },
     "nbformat": 4,
     "nbformat_minor": 5
    }