rkstiff.util.loghelper

Logging helper utilities

Logging helper utilities for rkstiff solvers.

This module provides standardized logging configuration tools for solver classes and submodules within the rkstiff framework. It ensures consistent, hierarchical log naming (e.g., rkstiff.IF4), and human-readable output formatting suitable for both console use and debugging during solver development.

Overview

  • _parse_loglevel() — Convert user-specified log level to a numeric constant.

  • get_level_name() — Return string name for a numeric logging level.

  • setup_logger() — Configure and return a new logger.

  • set_log_level() — Adjust the level of an existing logger.

  • get_solver_logger() — Create a standardized logger for solver classes.

Example

from rkstiff.util.loghelper import get_solver_logger

class IF4:
    def __init__(self):
        self.logger = get_solver_logger(self.__class__, "INFO")
        self.logger.info("Initialized IF4 solver")

# Output:
# 2025-11-02 10:30:45 - rkstiff.IF4 - INFO - Initialized IF4 solver

Functions

_parse_loglevel(loglevel)

Convert a log level (string or numeric) into a Python logging integer constant.

get_level_name(level)

Return the canonical string name for a numeric logging level.

get_solver_logger(solver_class[, loglevel])

Return a standardized logger for a solver class.

set_log_level(logger, loglevel)

Set or update the logging level of an existing logger.

setup_logger(name[, loglevel])

Create and configure a logger with standardized formatting.

rkstiff.util.loghelper.get_level_name(level)[source]

Return the canonical string name for a numeric logging level.

Parameters:

level (int) – Logging level constant (e.g. logging.INFO).

Returns:

Corresponding level name, such as "DEBUG", "INFO", or "ERROR".

Return type:

str

Examples

>>> get_level_name(logging.INFO)
'INFO'
>>> get_level_name(15)
'Level 15'
rkstiff.util.loghelper.setup_logger(name, loglevel='WARNING')[source]

Create and configure a logger with standardized formatting.

The logger uses timestamped output of the form:

YYYY-MM-DD HH:MM:SS - logger_name - LEVEL - message

If a logger with the given name already exists, this function will not add additional handlers (to avoid duplicated messages).

Parameters:
  • name (str) – Name for the logger (e.g. "rkstiff.solver.IF4" or __name__).

  • loglevel (str or int, optional) – Logging level as a string or integer. Default is "WARNING".

Returns:

Configured logger instance.

Return type:

logging.Logger

Notes

This helper ensures a consistent format across all rkstiff modules. Typically used via get_solver_logger() for class-based solvers.

Examples

>>> logger = setup_logger("rkstiff.IF4", "INFO")
>>> logger.info("Solver initialized")
2025-11-02 10:30:45 - rkstiff.IF4 - INFO - Solver initialized
rkstiff.util.loghelper.set_log_level(logger, loglevel)[source]

Set or update the logging level of an existing logger.

Parameters:
  • logger (logging.Logger) – Logger instance to modify.

  • loglevel (str or int) – New logging level (e.g. "DEBUG" or logging.INFO).

Raises:

ValueError – If the provided string does not correspond to a valid logging level.

Return type:

None

See also

setup_logger

Create and configure a new logger.

get_solver_logger

Generate a standardized solver logger.

Examples

>>> logger = setup_logger("rkstiff.IF4", "WARNING")
>>> set_log_level(logger, "DEBUG")
>>> logger.debug("Verbose solver output")
2025-11-02 10:30:47 - rkstiff.IF4 - DEBUG - Verbose solver output
rkstiff.util.loghelper.get_solver_logger(solver_class, loglevel='WARNING')[source]

Return a standardized logger for a solver class.

The logger name follows the pattern rkstiff.<ClassName>, ensuring consistent log hierarchies across solvers (e.g. rkstiff.IF4).

Parameters:
  • solver_class (type) – Class object (e.g. ETDRK4 or IF4). Its __name__ attribute is used in constructing the logger name.

  • loglevel (str or int, optional) – Logging level. Default is "WARNING".

Returns:

Configured logger instance named "rkstiff.<ClassName>".

Return type:

logging.Logger

Examples

>>> class IF4:
...     pass
>>> logger = get_solver_logger(IF4, "INFO")
>>> logger.info("Solver initialized")
2025-11-02 10:30:48 - rkstiff.IF4 - INFO - Solver initialized