Logging control#

Several of the different subpackages of Ubermag use logging to provide additional information if required. Each packages uses a logger with the name equal to the package name, e.g. oommfc has a logger called oommfc.

In Python logging information is not show by default if the level is lower than warning (see https://docs.python.org/3/howto/logging.html).

The ubermag metapackage contains a function setup_logging to controll logging for all its subpackages, providing two functionalities:

  1. Control over the log level of all Ubermag packages.

  2. Setup of a basic logging configuration to print logs to the screen.

[1]:
import ubermagutil

We can change the log level in two different ways.

  1. We can set a default level for all packages by passing an argument to level (see here for available log levels).

[2]:
ubermagutil.setup_logging(level="DEBUG")

The default value is level='WARNING'.

  1. We have fine-grain control over per-packages levels by passing a dictionary to package_levels. All subpackages not specified in this dictionary use the level passed to level (default 'WANRING').

[3]:
ubermagutil.setup_logging(
    package_levels={"discretisedfield": "INFO", "oommfc": "DEBUG"}
)

To show an example for this configuration, more precisely the log level 'DEBUG' for oommfc we can import oommfc and ask oommfc to find the default runner (which includes several logging messages).

[4]:
import oommfc

oommfc.runner.autoselect_runner()
2022-05-19:15:45:50,194  oommfc:DEBUG  [/home/martin/PhD/repos/ubermag-devtools/repos/oommfc/oommfc/oommf/oommf.py:autoselect_runner:510] Starting autoselect_runner: cache_runner=True, envvar=OOMMFTCL, oommf_exe=oommf, docker_exe=docker)
2022-05-19:15:45:50,197  oommfc:DEBUG  [/home/martin/PhD/repos/ubermag-devtools/repos/oommfc/oommfc/oommf/oommf.py:autoselect_runner:523] Step 1: Checking for the self.envvar=OOMMFTCL environment variable pointing to oommf.tcl.
2022-05-19:15:45:50,198  oommfc:DEBUG  [/home/martin/PhD/repos/ubermag-devtools/repos/oommfc/oommfc/oommf/oommf.py:autoselect_runner:548] Step 2: is oommf_exe=oommf in PATH? Could be from conda env or manual install.
2022-05-19:15:45:50,200  oommfc:DEBUG  [/home/martin/PhD/repos/ubermag-devtools/repos/oommfc/oommfc/oommf/oommf.py:autoselect_runner:554] Ouput from "which oommf_exe"=/opt/miniconda3/envs/ubermagdev/bin/oommf
2022-05-19:15:45:50,201  oommfc:DEBUG  [/home/martin/PhD/repos/ubermag-devtools/repos/oommfc/oommfc/oommf/oommf.py:autoselect_runner:573] Attempt command call
2022-05-19:15:45:50,279  oommfc:DEBUG  [/home/martin/PhD/repos/ubermag-devtools/repos/oommfc/oommfc/oommf/oommf.py:autoselect_runner:575] CompletedProcess(args=['/opt/miniconda3/envs/ubermagdev/bin/oommf', 'boxsi', '+fg', '+version', '-exitondone', '1', '-kill', 'all'], returncode=0, stdout=b'', stderr=b'<51622> OOMMF 2.0a3  info:\nOOMMF 2.0a3\n')

We can change the log level at every point of the notebook.

[5]:
ubermagutil.setup_logging(level="WARNING")
oommfc.runner.autoselect_runner()
Account lookup failure: martin
[6]:
ubermagutil.setup_logging(level="DEBUG")
oommfc.runner.autoselect_runner()
2022-05-19:15:45:51,156  oommfc:DEBUG  [/home/martin/PhD/repos/ubermag-devtools/repos/oommfc/oommfc/oommf/oommf.py:autoselect_runner:510] Starting autoselect_runner: cache_runner=True, envvar=OOMMFTCL, oommf_exe=oommf, docker_exe=docker)
2022-05-19:15:45:51,157  oommfc:DEBUG  [/home/martin/PhD/repos/ubermag-devtools/repos/oommfc/oommfc/oommf/oommf.py:autoselect_runner:523] Step 1: Checking for the self.envvar=OOMMFTCL environment variable pointing to oommf.tcl.
2022-05-19:15:45:51,158  oommfc:DEBUG  [/home/martin/PhD/repos/ubermag-devtools/repos/oommfc/oommfc/oommf/oommf.py:autoselect_runner:548] Step 2: is oommf_exe=oommf in PATH? Could be from conda env or manual install.
2022-05-19:15:45:51,159  oommfc:DEBUG  [/home/martin/PhD/repos/ubermag-devtools/repos/oommfc/oommfc/oommf/oommf.py:autoselect_runner:554] Ouput from "which oommf_exe"=/opt/miniconda3/envs/ubermagdev/bin/oommf
2022-05-19:15:45:51,159  oommfc:DEBUG  [/home/martin/PhD/repos/ubermag-devtools/repos/oommfc/oommfc/oommf/oommf.py:autoselect_runner:573] Attempt command call
2022-05-19:15:45:51,244  oommfc:DEBUG  [/home/martin/PhD/repos/ubermag-devtools/repos/oommfc/oommfc/oommf/oommf.py:autoselect_runner:575] CompletedProcess(args=['/opt/miniconda3/envs/ubermagdev/bin/oommf', 'boxsi', '+fg', '+version', '-exitondone', '1', '-kill', 'all'], returncode=0, stdout=b'', stderr=b'<51659> OOMMF 2.0a3  info:\nOOMMF 2.0a3\n')
Account lookup failure: martin