Spaces:
Sleeping
Sleeping
| import os | |
| import logging | |
| import multiprocessing as mproc | |
| import types | |
| #: number of available CPUs on this computer | |
| CPU_COUNT = int(mproc.cpu_count()) | |
| #: default date-time format | |
| FORMAT_DATE_TIME = '%Y%m%d-%H%M%S' | |
| #: default logging tile | |
| FILE_LOGS = 'logging.log' | |
| #: default logging template - log location/source for logging to file | |
| STR_LOG_FORMAT = '%(asctime)s:%(levelname)s@%(filename)s:%(processName)s - %(message)s' | |
| #: default logging template - date-time for logging to file | |
| LOG_FILE_FORMAT = logging.Formatter(STR_LOG_FORMAT, datefmt="%H:%M:%S") | |
| #: define all types to be assume list like | |
| ITERABLE_TYPES = (list, tuple, types.GeneratorType) | |
| def release_logger_files(): | |
| """ close all handlers to a file | |
| >>> release_logger_files() | |
| >>> len([1 for lh in logging.getLogger().handlers | |
| ... if type(lh) is logging.FileHandler]) | |
| 0 | |
| """ | |
| for hl in logging.getLogger().handlers: | |
| if isinstance(hl, logging.FileHandler): | |
| hl.close() | |
| logging.getLogger().removeHandler(hl) | |
| def set_experiment_logger(path_out, file_name=FILE_LOGS, reset=True): | |
| """ set the logger to file | |
| :param str path_out: path to the output folder | |
| :param str file_name: log file name | |
| :param bool reset: reset all previous logging into a file | |
| >>> set_experiment_logger('.') | |
| >>> len([1 for lh in logging.getLogger().handlers | |
| ... if type(lh) is logging.FileHandler]) | |
| 1 | |
| >>> release_logger_files() | |
| >>> os.remove(FILE_LOGS) | |
| """ | |
| log = logging.getLogger() | |
| log.setLevel(logging.DEBUG) | |
| if reset: | |
| release_logger_files() | |
| path_logger = os.path.join(path_out, file_name) | |
| fh = logging.FileHandler(path_logger) | |
| fh.setLevel(logging.DEBUG) | |
| fh.setFormatter(LOG_FILE_FORMAT) | |
| log.addHandler(fh) | |
| def set_ptl_logger(path_out, phase, file_name="ptl.log", reset=True): | |
| """ set the logger to file | |
| :param str path_out: path to the output folder | |
| :param str file_name: log file name | |
| :param bool reset: reset all previous logging into a file | |
| >>> set_experiment_logger('.') | |
| >>> len([1 for lh in logging.getLogger().handlers | |
| ... if type(lh) is logging.FileHandler]) | |
| 1 | |
| >>> release_logger_files() | |
| >>> os.remove(FILE_LOGS) | |
| """ | |
| file_name = f"ptl_{phase}.log" | |
| level = logging.INFO | |
| log = logging.getLogger("pytorch_lightning") | |
| log.setLevel(level) | |
| if reset: | |
| release_logger_files() | |
| path_logger = os.path.join(path_out, file_name) | |
| fh = logging.FileHandler(path_logger) | |
| fh.setLevel(level) | |
| fh.setFormatter(LOG_FILE_FORMAT) | |
| log.addHandler(fh) | |