Source code for easygraph.utils.logging

import logging
import sys

from pathlib import Path
from typing import Union


__all__ = ["default_log_formatter", "simple_stdout2file"]


[docs]def default_log_formatter() -> logging.Formatter: r"""Create a default formatter of log messages for logging.""" return logging.Formatter("[%(levelname)s %(asctime)s]-> %(message)s")
[docs]def simple_stdout2file(file_path: Union[str, Path]) -> None: r"""This function simply wraps the ``sys.stdout`` stream, and outputs messages to the ``sys.stdout`` and a specified file, simultaneously. Parameters: ``file_path`` (``file_path: Union[str, Path]``): The path of the file to output the messages. """ class SimpleLogger: def __init__(self, file_path: Path): file_path = Path(file_path).absolute() assert ( file_path.parent.exists() ), f"The parent directory of {file_path} does not exist." self.file_path = file_path self.terminal = sys.stdout self.file = open(file_path, "a") def write(self, message): self.terminal.write(message) self.file.write(message) self.flush() def flush(self): self.terminal.flush() self.file.flush() file_path = Path(file_path) sys.stdout = SimpleLogger(file_path)