Skip to content
Snippets Groups Projects
Logging.ipynb 5.41 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",
    
        "from qim3d.io.logger import log"
    
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 2,
    
       "id": "94022824",
    
       "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.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.io.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": "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": "eaceb5b6",
    
       "metadata": {},
       "outputs": [
        {
         "name": "stderr",
         "output_type": "stream",
         "text": [
    
          "DEBUG     1186198911.py:5    debug level message\n",
          "INFO      1186198911.py:6    info level message\n",
          "WARNING   1186198911.py:7    warning level message\n",
          "ERROR     1186198911.py:8    error level message\n",
          "CRITICAL  1186198911.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.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
    }