gemseo.utils.logging module#

Logging.

Settings LoggingConfiguration(*, date_format='%H:%M:%S', enable=True, file_path='', file_mode='a', level=20, message_format='%(levelname)8s - %(asctime)s: %(message)s')[source]#

Bases: BaseModel

The configuration for GEMSEO loggers.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

Parameters:
  • date_format (str) --

    By default it is set to "%H:%M:%S".

  • enable (bool) --

    By default it is set to True.

  • file_path (str | Path) --

    By default it is set to "".

  • file_mode (str) --

    By default it is set to "a".

  • level (str | int) --

    By default it is set to 20.

  • message_format (str) --

    By default it is set to "%(levelname)8s - %(asctime)s: %(message)s".

Return type:

None

date_format: str = '%H:%M:%S'#

The logging date format.

enable: bool = True#

Whether to enable GEMSEO logging.

file_mode: str = 'a'#

The logging output file mode, either 'w' (overwrite) or 'a' (append).

file_path: str | Path = ''#

The path to the log file, if outputs must be written in a file.

level: str | int = 20#

The numerical value or name of the logging level, as defined in logging. Values can either be logging.NOTSET ("NOTSET"), logging.DEBUG ("DEBUG"), logging.INFO ("INFO"), logging.WARNING ("WARNING" or "WARN"), logging.ERROR ("ERROR"), or logging.CRITICAL ("FATAL" or "CRITICAL").

message_format: str = '%(levelname)8s - %(asctime)s: %(message)s'#

The logging message format.

class LoggingContext(logger=None, level=30, handler=None, close=True)[source]#

Bases: object

Context manager for selective logging.

Change the level of the logger in a with block.

Examples

>>> import logging
>>> logger = logging.getLogger()
>>> logger.setLevel(logging.INFO)
>>> logger.info("This should appear.")
>>> with LoggingContext(logger):
>>>    logger.warning("This should appear.")
>>>    logger.info("This should not appear.")
>>>
>>> logger.info("This should appear.")

Source: Logging Cookbook

Parameters:
  • logger (Logger | None) -- The logger.

  • level (int | None) --

    The level of the logger to be used on block entry. If None, do not change the level of the logger.

    By default it is set to 30.

  • handler (StreamHandler | None) -- An additional handler to be used on block entry.

  • close (bool) --

    Whether to close the handler on block exit.

    By default it is set to True.

close: bool#

Whether to close the handler on block exit.

handler: StreamHandler#

An additional handler to be used on block entry.

level: int | None#

The level of the logger to be used on block entry.

If None, do not change the level of the logger.

logger: Logger#

The logger.

class LoggingSettings(date_format='%H:%M:%S', message_format='%(levelname)8s - %(asctime)s: %(message)s', logger=<Logger gemseo (INFO)>)[source]#

Bases: object

The settings of a logger.

Parameters:
  • date_format (str) --

    By default it is set to "%H:%M:%S".

  • message_format (str) --

    By default it is set to "%(levelname)8s - %(asctime)s: %(message)s".

  • logger (Logger) --

    By default it is set to <Logger gemseo (INFO)>.

date_format: str = '%H:%M:%S'#

The format of the date of the logged message.

logger: Logger = <Logger gemseo (INFO)>#

The logger.

message_format: str = '%(levelname)8s - %(asctime)s: %(message)s'#

The format of the logged message.

class MultiLineFileHandler(filename, mode='a', encoding=None, delay=False, errors=None)[source]#

Bases: MultiLineHandlerMixin, FileHandler

FileHandler to split multiline logging messages.

Open the specified file and use it as the stream for logging.

class MultiLineHandlerMixin[source]#

Bases: object

Stateless mixin class to override logging handlers behavior.

emit(record)[source]#

Emit one logging message per input record line.

Return type:

None

class MultiLineStreamHandler(stream=None)[source]#

Bases: MultiLineHandlerMixin, StreamHandler

StreamHandler to split multiline logging messages.

Initialize the handler.

If stream is not specified, sys.stderr is used.

class OneLineLogging(logger)[source]#

Bases: object

A context manager to make the StreamHandlers use only one line.

Each record replaces the previous one.

Parameters:

logger (Logger) -- The logger.

DEFAULT_DATE_FORMAT: Final[str] = '%H:%M:%S'#

The format of the date of the logged message.

DEFAULT_MESSAGE_FORMAT: Final[str] = '%(levelname)8s - %(asctime)s: %(message)s'#

The format of the logged message.

GEMSEO_LOGGER: Final[Logger] = <Logger gemseo (INFO)>#

The GEMSEO's logger.

LOGGING_SETTINGS = LoggingSettings(date_format='%H:%M:%S', message_format='%(levelname)8s - %(asctime)s: %(message)s', logger=<Logger gemseo (INFO)>)#

The logging settings.

The parameters are changed by configure_logger().