Skip to content

logging.getLogger() should follow a standardized syntax. #5369

@jauy123

Description

@jauy123

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(&#39;MDAnalysis.MODULENAME&#39;)</span>
package/doc/html/_modules/MDAnalysis/lib/log.html:<span class="sd">      logging.getLogger(&quot;MDAnalysis&quot;).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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions