| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| import logging |
| from typing import Optional |
|
|
|
|
| class WarningFilter(logging.Filter): |
| def filter(self, record): |
| |
| if "simtk.openmm" in record.getMessage(): |
| return False |
| return True |
|
|
|
|
| def get_logger( |
| name: str = "", loglevel: str = "INFO", log_file_path: Optional[str] = None |
| ) -> logging.Logger: |
| """ |
| Get a logger with the specified name and add handlers to the root logger. |
| |
| Args: |
| name (str): The name of the logger. Defaults to an empty string. |
| loglevel (str): The logging level. Defaults to "INFO". |
| log_file_path (Optional[str]): The path to the log file. Defaults to None. |
| |
| Returns: |
| logging.Logger: The configured logger. |
| """ |
| root_logger = logging.getLogger() |
| logger = logging.getLogger(name) |
| |
| add_handlers(root_logger, loglevel, log_file_path) |
| return logger |
|
|
|
|
| def add_handlers( |
| logger: logging.Logger, loglevel: str, log_file_path: Optional[str] = None |
| ) -> logging.Logger: |
| """ |
| Add handlers to the specified logger. |
| |
| Args: |
| logger (logging.Logger): The logger to which handlers will be added. |
| loglevel (str): The logging level. |
| log_file_path (Optional[str]): The path to the log file. Defaults to None. |
| |
| Returns: |
| logging.Logger: The logger with added handlers. |
| """ |
| fmt = "%(asctime)-15s [%(pathname)s:%(lineno)d] %(levelname)s %(name)s: %(message)s" |
| formatter = logging.Formatter(fmt) |
| loglevel = getattr(logging, loglevel.upper(), logging.INFO) |
| logger.setLevel(loglevel) |
|
|
| if not logger.handlers: |
| handler = logging.StreamHandler() |
| logger.addHandler(handler) |
| else: |
| handler = logger.handlers[0] |
| handler.setFormatter(formatter) |
| warning_filter = WarningFilter() |
| handler.addFilter(warning_filter) |
|
|
| |
| if log_file_path is not None and len(logger.handlers) == 1: |
| handler = logging.FileHandler(log_file_path, mode="a") |
| handler.setLevel(logging.INFO) |
| handler.setFormatter(formatter) |
| logger.addHandler(handler) |
| handler.addFilter(warning_filter) |
|
|
| return logger |
|
|