Skip to content
Snippets Groups Projects

Notebook unit testing

14 files
+ 655
280
Compare changes
  • Side-by-side
  • Inline

Files

+ 43
17
%% Cell type:markdown id:ae2a75fe tags:
# Logging system for qim3d
Using proper logging instead of print statements is a recommended practice.
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.
%% Cell type:code id:a31b2245 tags:
``` python
import qim3d
from qim3d.io.logger import log
from qim3d.utils._logger import log
```
%% Cell type:code id:94022824 tags:
``` python
# Here we test by sending one message for each level
# Note that DEBUG and INFO do not appear
# Note that DEBUG does not appear
log.debug('debug level message')
log.info('info level message')
log.warning('warning level message')
log.error('error level message')
log.critical('critical level message')
```
%% Output
info level message
warning level message
error level message
critical level message
%% Cell type:code id:b0856333 tags:
``` python
# Change the level to debug
qim3d.io.logger.level("debug")
qim3d.utils._logger.level("debug")
# Now all the levels get logged
log.debug('debug level message')
log.info('info level message')
log.warning('warning level message')
log.error('error level message')
log.critical('critical level message')
```
%% Output
debug level message
info level message
warning level message
error level message
critical level message
%% Cell type:code id:eb542404 tags:
``` python
# Change the level to error
qim3d.io.logger.level("error")
qim3d.utils._logger.level("error")
# And now only above ERROR is shown
log.debug('debug level message')
log.info('info level message')
log.warning('warning level message')
log.error('error level message')
log.critical('critical level message')
```
%% Output
error level message
critical level message
%% Cell type:code id:75af4473 tags:
``` python
# Change the level back to info
qim3d.utils._logger.level("info")
# And now only above INFO is shown again
log.debug('debug level message')
log.info('info level message')
log.warning('warning level message')
log.error('error level message')
log.critical('critical level message')
```
%% Output
info level message
warning level message
error level message
critical level message
%% Cell type:code id:af3cc812 tags:
``` python
# We can increase the level of detail
qim3d.io.logger.set_detailed_output()
qim3d.utils._logger.set_detailed_output()
# Note that DEBUG and INFO are still not shown
# Note that DEBUG is still not shown
log.debug('debug level message')
log.info('info level message')
log.warning('warning level message')
log.error('error level message')
log.critical('critical level message')
```
%% Output
ERROR 3224913348.py:8 error level message
CRITICAL 3224913348.py:9 critical level message
INFO 20327955.py:6 info level message
WARNING 20327955.py:7 warning level message
ERROR 20327955.py:8 error level message
CRITICAL 20327955.py:9 critical level message
%% Cell type:code id:d7239b1b tags:
``` python
# We can switch back to the simple output mode
qim3d.io.logger.set_simple_output()
qim3d.utils._logger.set_simple_output()
# Now we see all the levels on simple mode
# Now the levels are back to simple mode
log.debug('debug level message')
log.info('info level message')
log.warning('warning level message')
log.error('error level message')
log.critical('critical level message')
```
%% Output
info level message
warning level message
error level message
critical level message
%% Cell type:code id:eaceb5b6 tags:
``` python
# Change back to detailed and DEBUG level
qim3d.io.logger.set_detailed_output()
qim3d.io.logger.level("debug")
qim3d.utils._logger.set_detailed_output()
qim3d.utils._logger.level("debug")
log.debug('debug level message')
log.info('info level message')
log.warning('warning level message')
log.error('error level message')
log.critical('critical level message')
```
%% Output
DEBUG 1186198911.py:5 debug level message
INFO 1186198911.py:6 info level message
WARNING 1186198911.py:7 warning level message
ERROR 1186198911.py:8 error level message
CRITICAL 1186198911.py:9 critical level message
DEBUG 3380703693.py:5 debug level message
INFO 3380703693.py:6 info level message
WARNING 3380703693.py:7 warning level message
ERROR 3380703693.py:8 error level message
CRITICAL 3380703693.py:9 critical level message
Loading