While working on #5367, I found that MDAnalysis libraries use logging.getLogger a bit inappropriately. The
If you run the following shell command from the root directory in develop:
grep -F -r "logging.getLogger" . | grep -v '__name__'
You get the following output:
grep: package/MDAnalysis/lib/__pycache__/log.cpython-312.pyc: binary file matches
package/MDAnalysis/analysis/hydrogenbonds/wbridge_analysis.py:logger = logging.getLogger("MDAnalysis.analysis.WaterBridgeAnalysis")
package/MDAnalysis/analysis/legacy/x3dna.py:logger = logging.getLogger("MDAnalysis.analysis.x3dna")
package/MDAnalysis/analysis/align.py:logger = logging.getLogger("MDAnalysis.analysis.align")
package/MDAnalysis/analysis/rms.py:logger = logging.getLogger("MDAnalysis.analysis.rmsd")
package/MDAnalysis/analysis/msd.py:logger = logging.getLogger("MDAnalysis.analysis.msd")
package/MDAnalysis/analysis/contacts.py:logger = logging.getLogger("MDAnalysis.analysis.contacts")
package/MDAnalysis/analysis/density.py:logger = logging.getLogger("MDAnalysis.analysis.density")
package/MDAnalysis/analysis/distances.py:logger = logging.getLogger("MDAnalysis.analysis.distances")
package/MDAnalysis/analysis/gnm.py:logger = logging.getLogger("MDAnalysis.analysis.GNM")
package/MDAnalysis/analysis/atomicdistances.py:logger = logging.getLogger("MDAnalysis.analysis.atomicdistances")
package/MDAnalysis/analysis/diffusionmap.py:logger = logging.getLogger("MDAnalysis.analysis.diffusionmap")
package/MDAnalysis/converters/ParmEdParser.py:logger = logging.getLogger("MDAnalysis.converters.ParmEdParser")
package/MDAnalysis/converters/RDKitParser.py:logger = logging.getLogger("MDAnalysis.converters.RDKitParser")
package/MDAnalysis/coordinates/TPR.py:logger = logging.getLogger("MDAnalysis.coordinates.TPR")
package/MDAnalysis/coordinates/IMD.py:logger = logging.getLogger("MDAnalysis.coordinates.IMDReader")
package/MDAnalysis/coordinates/TRJ.py:logger = logging.getLogger("MDAnalysis.coordinates.AMBER")
package/MDAnalysis/coordinates/TRC.py:logger = logging.getLogger("MDAnalysis.coordinates.GROMOS11")
package/MDAnalysis/coordinates/PDB.py:logger = logging.getLogger("MDAnalysis.coordinates.PBD")
package/MDAnalysis/coordinates/XYZ.py:logger = logging.getLogger("MDAnalysis.coordinates.XYZ")
package/MDAnalysis/core/universe.py:logger = logging.getLogger("MDAnalysis.core.universe")
package/MDAnalysis/guesser/base.py:logger = logging.getLogger("MDAnalysis.guesser.base")
grep: package/doc/html/.doctrees/documentation_pages/lib/log.doctree: binary file matchespackage/MDAnalysis/lib/log.py: logger = logging.getLogger('MDAnalysis.MODULENAME')
package/MDAnalysis/lib/log.py: logging.getLogger("MDAnalysis").info(
package/MDAnalysis/lib/log.py: logger = logging.getLogger("MDAnalysis")
package/MDAnalysis/lib/log.py: logger = logging.getLogger(logger_name)
package/MDAnalysis/lib/log.py: logging.getLogger("MDAnalysis").addHandler(h)
package/MDAnalysis/topology/LAMMPSParser.py:logger = logging.getLogger("MDAnalysis.topology.LAMMPS")
package/MDAnalysis/topology/PSFParser.py:logger = logging.getLogger("MDAnalysis.topology.PSF")
package/MDAnalysis/topology/TOPParser.py:logger = logging.getLogger("MDAnalysis.topology.TOPParser")
package/MDAnalysis/topology/PDBParser.py:logger = logging.getLogger("MDAnalysis.topology.PDBParser")
package/MDAnalysis/topology/TPRParser.py:logger = logging.getLogger("MDAnalysis.topology.TPRparser")
package/MDAnalysis/due.py: logging.getLogger("duecredit").error(
package/MDAnalysis/__init__.py:logger = logging.getLogger("MDAnalysis.__init__")
package/MDAnalysis/__init__.py:logging.getLogger("MDAnalysis").addHandler(log.NullHandler())
grep: package/doc/html/.doctrees/environment.pickle: binary file matches
package/doc/html/_modules/MDAnalysis/lib/log.html:<span class="sd"> logger = logging.getLogger('MDAnalysis.MODULENAME')</span>
package/doc/html/_modules/MDAnalysis/lib/log.html:<span class="sd"> logging.getLogger("MDAnalysis").addHandler(h)</span>
Official Python documentation recommends logging.getLogger(__name__) as a way of organizing loggers since they all share the same name space.
Therefore, each logging.getLogger() call above should follow a standardized syntax to get the path at runtime for each logging call. Something like logging.getLogger(__name__ / path_to_lib).
Current version of MDAnalysis
- Which version are you using? (run
python -c "import MDAnalysis as mda; print(mda.__version__)")
- 2.11.0-dev0
- Which version of Python (
python -V)?
- 3.12.9
- Which operating system?
- Linux
While working on #5367, I found that MDAnalysis libraries use
logging.getLoggera bit inappropriately. TheIf you run the following shell command from the root directory in
develop:You get the following output:
Official Python documentation recommends
logging.getLogger(__name__)as a way of organizing loggers since they all share the same name space.Therefore, each
logging.getLogger()call above should follow a standardized syntax to get the path at runtime for each logging call. Something likelogging.getLogger(__name__ / path_to_lib).Current version of MDAnalysis
python -c "import MDAnalysis as mda; print(mda.__version__)")python -V)?