Source code for libmuscle.logging

from enum import Enum
import logging

from libmuscle.timestamp import Timestamp


[docs]class LogLevel(Enum): """Log levels for MUSCLE3. These match the levels in the MUSCLE Manager Protocol, and should be kept identical to those. They also match the Python logging log levels. """ DISABLE = 100 CRITICAL = 50 ERROR = 40 WARNING = 30 INFO = 20 DEBUG = 10 LOCAL = 0
[docs] @staticmethod def from_python_level(level: int) -> 'LogLevel': """Creates a LogLevel from a Python log level. Args: level: A standard Python log level, such as logging.WARNING. Returns: The same level, but as a LogLevel. """ if level > 40: return LogLevel.CRITICAL elif level > 30: return LogLevel.ERROR elif level > 20: return LogLevel.WARNING elif level > 10: return LogLevel.INFO return LogLevel.DEBUG
[docs] def as_python_level(self) -> int: """Convert the LogLevel to the corresponding Python level.""" to_python_level = { LogLevel.CRITICAL: logging.CRITICAL, LogLevel.ERROR: logging.ERROR, LogLevel.WARNING: logging.WARNING, LogLevel.INFO: logging.INFO, LogLevel.DEBUG: logging.DEBUG, LogLevel.LOCAL: logging.DEBUG} return to_python_level[self]
[docs]class LogMessage: """A log message as used by MUSCLE3. Args: instance_id: The identifier of the instance that generated \ this message. timestamp: When the message was generated (real-world, not \ simulation). level: Log level of the message. text: Content of the message. Attributes: instance_id: The identifier of the instance that generated \ this message. timestamp: When the message was generated (real-world, not \ simulation). level: Log level of the message. text: Content of the message. """ def __init__( self, instance_id: str, timestamp: Timestamp, level: LogLevel, text: str ) -> None: self.instance_id = instance_id self.timestamp = timestamp self.level = level self.text = text