Source code for rpio.logging.logger

#**************************************************************************
# * Copyright (C) 2023-present Bert Van Acker (B.MKR) <bva.bmkr@gmail.com>
# *
# * This file is part of the hybridIO project.
# *
# * HybridIO can not be copied and/or distributed without the express
# * permission of Bert Van Acker
# *************************************************************************
import os
import logging

[docs]def setup_logger(name, log_file, level=logging.INFO): """Setup of multiple loggers""" formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s') handler = logging.FileHandler(log_file) handler.setFormatter(formatter) logger = logging.getLogger(name) logger.setLevel(level) logger.addHandler(handler) return logger
[docs]class Logger(object): def __init__(self,name="customLogger",path=None,verbose=False): """Initialize a Logger component. Parameters ---------- name : string name of the property components verbose : bool component verbose execution See Also -------- .. Examples -------- >> logger = Logger(verbose=False) """ # --- logger configuration --- self._name = name self._verbose = verbose #set logging file if path is None: systemLog = os.getcwd()+"/Resources/sys.log" else: systemLog = path+"/Resources/sys.log" #setup logger self._syslogger=setup_logger(name="systemLog",log_file=systemLog,level=logging.INFO) #self.syslog(msg="Logger configured", level="INFO") @property def name(self): """The name property (read-only).""" return self._name
[docs] def syslog(self,msg="tbd",level="INFO"): """Perform a system log entry. Parameters ---------- msg : string message to be logged type : string Level of the logging See Also -------- .. Examples -------- >> logger.syslog(msg="this is a examples log message",level="INFO") """ # verbose printing if self._verbose: print(msg) # logging if level == 'INFO': self._syslogger.info(msg) elif level == 'DEBUG': self._syslogger.debug(msg) elif level == 'ERROR': self._syslogger.error(msg)