Skip to content
Snippets Groups Projects
Logging.ipynb 6.3 KiB
Newer Older
  • Learn to ignore specific revisions
  • {
     "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",
    
        "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",
    
    s193396's avatar
    s193396 committed
        "from qim3d.utils._logger import log"
    
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 2,
    
       "id": "94022824",
    
       "metadata": {},
       "outputs": [
        {
         "name": "stderr",
         "output_type": "stream",
         "text": [
    
    s193396's avatar
    s193396 committed
          "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",
    
    s193396's avatar
    s193396 committed
        "# 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",
    
    s193396's avatar
    s193396 committed
        "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",
    
    s193396's avatar
    s193396 committed
        "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,
    
    s193396's avatar
    s193396 committed
       "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": [
    
    s193396's avatar
    s193396 committed
          "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",
    
    s193396's avatar
    s193396 committed
        "qim3d.utils._logger.set_detailed_output()\n",
    
    s193396's avatar
    s193396 committed
        "# 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",
    
    s193396's avatar
    s193396 committed
       "execution_count": 7,
    
       "id": "d7239b1b",
       "metadata": {},
       "outputs": [
        {
         "name": "stderr",
         "output_type": "stream",
         "text": [
    
    s193396's avatar
    s193396 committed
          "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",
    
    s193396's avatar
    s193396 committed
        "qim3d.utils._logger.set_simple_output()\n",
    
    s193396's avatar
    s193396 committed
        "# 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",
    
    s193396's avatar
    s193396 committed
       "execution_count": 8,
    
       "id": "eaceb5b6",
    
       "metadata": {},
       "outputs": [
        {
         "name": "stderr",
         "output_type": "stream",
         "text": [
    
    s193396's avatar
    s193396 committed
          "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",
    
    s193396's avatar
    s193396 committed
        "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": {
    
    s193396's avatar
    s193396 committed
       "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",
    
    s193396's avatar
    s193396 committed
       "version": "3.10.14"
    
      }
     },
     "nbformat": 4,
     "nbformat_minor": 5
    }