Logging#

PyLith includes pylith::utils::EventLogger as a high-level interface for event logging with PETSc. We create local Events classes within the C++ implementation files (*.cc) to create variables that hold the event ids. This streamlines logging events within the C++ code. We identify events using variables rather than strings, which means that typos in names are detected at compile time rather than at runtime. Refer to the _Problem::Events class near the top of libsrc/pylith/problems/Problem.cc for an example of how we implement event logging.

We name events in PyLith C++ code following the template PL:CLASS:METHOD (C++ namespace style but reducing :: to : to reduce the length of the string) in which we are logging method METHOD in C++ class CLASS. In the PyLith Python code, we follow the template PL.CLASS.METHOD.