@Name : MarvinLog @Desc : provides interface for logging to marvin @Input : logger_name : name for logger
| 29 | |
| 30 | |
| 31 | class MarvinLog: |
| 32 | |
| 33 | ''' |
| 34 | @Name : MarvinLog |
| 35 | @Desc : provides interface for logging to marvin |
| 36 | @Input : logger_name : name for logger |
| 37 | ''' |
| 38 | logFormat = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s") |
| 39 | _instance = None |
| 40 | |
| 41 | def __new__(cls, logger_name): |
| 42 | if not cls._instance: |
| 43 | cls._instance = super(MarvinLog, cls).__new__(cls) |
| 44 | return cls._instance |
| 45 | |
| 46 | def __init__(self, logger_name): |
| 47 | ''' |
| 48 | @Name: __init__ |
| 49 | @Input: logger_name for logger |
| 50 | ''' |
| 51 | self.__loggerName = logger_name |
| 52 | ''' |
| 53 | Logger for Logging Info |
| 54 | ''' |
| 55 | self.__logger = None |
| 56 | ''' |
| 57 | Log Folder Directory |
| 58 | ''' |
| 59 | self.__logFolderDir = None |
| 60 | self.__setLogger() |
| 61 | |
| 62 | def __setLogger(self): |
| 63 | ''' |
| 64 | @Name : __setLogger |
| 65 | @Desc : Sets the Logger and Level |
| 66 | ''' |
| 67 | self.__logger = logging.getLogger(self.__loggerName) |
| 68 | self.__logger.setLevel(logging.DEBUG) |
| 69 | |
| 70 | def __setLogHandler(self, log_file_path, |
| 71 | log_format=None, |
| 72 | log_level=logging.DEBUG): |
| 73 | ''' |
| 74 | @Name : __setLogHandler |
| 75 | @Desc: Adds the given Log handler to the current logger |
| 76 | @Input: log_file_path: Log File Path as where to store the logs |
| 77 | log_format : Format of log messages to be dumped |
| 78 | log_level : Determines the level of logging for this logger |
| 79 | @Output: SUCCESS if no issues else FAILED |
| 80 | ''' |
| 81 | try: |
| 82 | if log_file_path is not None: |
| 83 | stream = logging.FileHandler(log_file_path) |
| 84 | else: |
| 85 | stream = logging.StreamHandler(stream=sys.stdout) |
| 86 | |
| 87 | if log_format is not None: |
| 88 | stream.setFormatter(log_format) |
no outgoing calls
no test coverage detected