diff --git a/docs/source/conf.py b/docs/source/conf.py index c8e8fce6579b47a3e46e46e1f852fb9bd47b3e0b..ab4270911b795f687c2ecad789d884ef3bb1664a 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -19,6 +19,7 @@ import os # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. sys.path.insert(0, os.path.abspath('../../skabase')) + # -- General configuration ------------------------------------------------ # If your documentation needs a minimal Sphinx version, state it here. diff --git a/skabase/SKABaseDevice/SKABaseDevice/SKABaseDevice.py b/skabase/SKABaseDevice/SKABaseDevice/SKABaseDevice.py index 1e54d5a93376ef50ac34457bddf358487800e220..a59eb01b4ca6fb441e631d0ee798b48483c9b741 100644 --- a/skabase/SKABaseDevice/SKABaseDevice/SKABaseDevice.py +++ b/skabase/SKABaseDevice/SKABaseDevice/SKABaseDevice.py @@ -31,7 +31,9 @@ from skabase.SKABaseDevice import release from skabase.faults import GroupDefinitionsError -MODULE_LOGGER = logging.getLogger(__name__) +# Initialize logging +logging.basicConfig() +# MODULE_LOGGER = logging.getLogger(__name__) # PROTECTED REGION END # // SKABaseDevice.additionnal_import @@ -44,6 +46,14 @@ class SKABaseDevice(Device): """ __metaclass__ = DeviceMeta # PROTECTED REGION ID(SKABaseDevice.class_variable) ENABLED START # + + global logger + logger = logging.getLogger(__name__) + syslogs = SysLogHandler(address='/dev/log', facility='syslog') + formatter = logging.Formatter('%(name)s: %(levelname)s %(module)s %(message)r') + syslogs.setFormatter(formatter) + logger.addHandler(syslogs) + def _get_device_json(self, args_dict): """ Returns device configuration in JSON format. @@ -67,7 +77,7 @@ class SKABaseDevice(Device): return device_dict except Exception as ex: - MODULE_LOGGER.fatal(str(ex), exc_info=True) + logger.fatal(str(ex), exc_info=True) raise def _parse_argin(self, argin, defaults=None, required=None): @@ -83,7 +93,7 @@ class SKABaseDevice(Device): if argin: args_dict.update(json.loads(argin)) except ValueError as ex: - MODULE_LOGGER.fatal(str(ex), exc_info=True) + logger.fatal(str(ex), exc_info=True) raise missing_args = [] @@ -136,16 +146,16 @@ class SKABaseDevice(Device): try: attr_dict['min_value'] = attrib.get_min_value() except AttributeError as attr_err: - MODULE_LOGGER.info(str(attr_err), exc_info=True) + logger.info(str(attr_err), exc_info=True) except DevFailed as derr: - MODULE_LOGGER.info(str(derr), exc_info=True) + logger.info(str(derr), exc_info=True) try: attr_dict['max_value'] = attrib.get_max_value() except AttributeError as attr_err: - MODULE_LOGGER.info(str(attr_err), exc_info=True) + logger.info(str(attr_err), exc_info=True) except DevFailed as derr: - MODULE_LOGGER.info(str(derr), exc_info=True) + logger.info(str(derr), exc_info=True) attr_dict['readonly'] = ( attrib.get_writable() not in [AttrWriteType.READ_WRITE, @@ -186,6 +196,60 @@ class SKABaseDevice(Device): return attributes + def dev_logging(self, dev_log_msg, dev_log_level): + # Element Level Logging + if self._element_logging_level >= int(tango.LogLevel.LOG_FATAL) and dev_log_level == int( + tango.LogLevel.LOG_FATAL): + self.fatal_stream(dev_log_msg) + elif self._element_logging_level >= int(tango.LogLevel.LOG_ERROR) and dev_log_level == int( + tango.LogLevel.LOG_ERROR): + self.error_stream(dev_log_msg) + elif self._element_logging_level >= int(tango.LogLevel.LOG_WARN) and dev_log_level == int( + tango.LogLevel.LOG_WARN): + self.warn_stream(dev_log_msg) + elif self._element_logging_level >= int(tango.LogLevel.LOG_INFO) and dev_log_level == int( + tango.LogLevel.LOG_INFO): + self.info_stream(dev_log_msg) + elif self._element_logging_level >= int(tango.LogLevel.LOG_DEBUG) and dev_log_level == int( + tango.LogLevel.LOG_DEBUG): + self.debug_stream(dev_log_msg) + + # Central Level Logging + if self._central_logging_level >= int(tango.LogLevel.LOG_FATAL) and dev_log_level == int( + tango.LogLevel.LOG_FATAL): + self.fatal_stream(dev_log_msg) + elif self._central_logging_level >= int(tango.LogLevel.LOG_ERROR) and dev_log_level == int( + tango.LogLevel.LOG_ERROR): + self.error_stream(dev_log_msg) + elif self._central_logging_level >= int(tango.LogLevel.LOG_WARN) and dev_log_level == int( + tango.LogLevel.LOG_WARN): + self.warn_stream(dev_log_msg) + elif self._central_logging_level >= int(tango.LogLevel.LOG_INFO) and dev_log_level == int( + tango.LogLevel.LOG_INFO): + self.info_stream(dev_log_msg) + elif self._central_logging_level >= int(tango.LogLevel.LOG_DEBUG) and dev_log_level == int( + tango.LogLevel.LOG_DEBUG): + self.debug_stream(dev_log_msg) + + # Storage Level Logging + if self._storage_logging_level >= int(tango.LogLevel.LOG_FATAL) and dev_log_level == int( + tango.LogLevel.LOG_FATAL): + logger.fatal(dev_log_msg) + elif self._storage_logging_level >= int(tango.LogLevel.LOG_ERROR) and dev_log_level == int( + tango.LogLevel.LOG_ERROR): + logger.error(dev_log_msg) + elif self._storage_logging_level >= int(tango.LogLevel.LOG_WARN) and dev_log_level == int( + tango.LogLevel.LOG_WARN): + logger.warn(dev_log_msg) + elif self._storage_logging_level >= int(tango.LogLevel.LOG_INFO) and dev_log_level == int( + tango.LogLevel.LOG_INFO): + logger.info(dev_log_msg) + elif self._storage_logging_level >= int(tango.LogLevel.LOG_DEBUG) and dev_log_level == int( + tango.LogLevel.LOG_DEBUG): + logger.debug(dev_log_msg) + else: + pass + # PROTECTED REGION END # // SKABaseDevice.class_variable @@ -438,6 +502,18 @@ class SKABaseDevice(Device): :return: """ self._storage_logging_level = value + if self._storage_logging_level == int(tango.LogLevel.LOG_FATAL): + logger.setLevel(logging.FATAL) + elif self._storage_logging_level == int(tango.LogLevel.LOG_ERROR): + logger.setLevel(logging.ERROR) + elif self._storage_logging_level == int(tango.LogLevel.LOG_WARN): + logger.setLevel(logging.WARNING) + elif self._storage_logging_level == int(tango.LogLevel.LOG_INFO): + logger.setLevel(logging.INFO) + elif self._storage_logging_level == int(tango.LogLevel.LOG_DEBUG): + logger.setLevel(logging.DEBUG) + else: + logger.setLevel(logging.DEBUG) # PROTECTED REGION END # // SKABaseDevice.storageLoggingLevel_write def read_healthState(self): diff --git a/skabase/SKALogger/SKALogger/SKALogger.py b/skabase/SKALogger/SKALogger/SKALogger.py index 4df50d62ff1c7986a89617189119da29903f07b1..cfadfc6aa377d2c79b8555d647d2e8c084e1be2e 100644 --- a/skabase/SKALogger/SKALogger/SKALogger.py +++ b/skabase/SKALogger/SKALogger/SKALogger.py @@ -33,7 +33,6 @@ formatter = logging.Formatter('%(name)s: %(levelname)s %(module)s %(message)r') syslog.setFormatter(formatter) logger.addHandler(syslog) - # PROTECTED REGION END # // SKALogger.additionnal_import __all__ = ["SKALogger", "main"] @@ -41,7 +40,6 @@ __all__ = ["SKALogger", "main"] class SKALogger(SKABaseDevice): """ - A generic base device for Logging for SKA. """ __metaclass__ = DeviceMeta @@ -174,6 +172,8 @@ class SKALogger(SKABaseDevice): A method to set Central logging level of source device. """ central_logging_level = argin[0][:] + #To convert the type of log level from numpy.ndarray to list. Needs to fix in PyTango. + central_logging_level = central_logging_level.tolist() central_logging_device = argin[1][:] i = 0 while i < len(central_logging_level[:]): @@ -196,6 +196,8 @@ class SKALogger(SKABaseDevice): A method to set Element logging level of source device. """ element_logging_level = argin[0][:] + #To convert the type of log level from numpy.ndarray to list. Needs to fix in PyTango. + element_logging_level = element_logging_level.tolist() element_logging_device = argin[1][:] i = 0 while i < len(element_logging_level[:]): @@ -218,6 +220,8 @@ class SKALogger(SKABaseDevice): A method to set Storage logging level of source device. """ storage_logging_level = argin[0][:] + #To convert the type of log level from numpy.ndarray to list. Needs to fix in PyTango. + storage_logging_level = storage_logging_level.tolist() storage_logging_device = argin[1][:] i = 0 while i < len(storage_logging_level[:]): diff --git a/skabase/SKALogger/SKALogger/release.py b/skabase/SKALogger/SKALogger/release.py index 70ffafba47ac96afc3ac3c2c5d5b31944329a71b..ebb2cd7d5be19c1cf17f6075fcdfbee46659966b 100644 --- a/skabase/SKALogger/SKALogger/release.py +++ b/skabase/SKALogger/SKALogger/release.py @@ -11,8 +11,8 @@ name = """tangods-skalogger""" version = "1.0.0" version_info = version.split(".") description = """A generic base device for Logging for SKA.""" -author = "cam" -author_email = "cam at ska.ac.za" +author = "lochanb.ska" +author_email = "lochanb.ska at gmail.com" license = """BSD-3-Clause""" url = """www.tango-controls.org""" copyright = """""" diff --git a/skabase/SKASubarray/SKASubarray/SKASubarray.py b/skabase/SKASubarray/SKASubarray/SKASubarray.py index a52e11b80b31b820bf4d757a780bbe090d557ffe..ad47cbca1f55bc7af56a3390946c2f7be373897d 100644 --- a/skabase/SKASubarray/SKASubarray/SKASubarray.py +++ b/skabase/SKASubarray/SKASubarray/SKASubarray.py @@ -411,6 +411,7 @@ class SKASubarray(SKAObsDevice): def EndSB(self): # PROTECTED REGION ID(SKASubarray.EndSB) ENABLED START # """Change obsState to IDLE.""" + pass # PROTECTED REGION END # // SKASubarray.EndSB @command( diff --git a/skabase/SKATestDevice/SKATestDevice.xmi b/skabase/SKATestDevice/SKATestDevice.xmi index 1e22dab50b2b84e88520e68001ac694a9f566c2d..7f3f3bb59877e1144c8984012075370374795d92 100644 --- a/skabase/SKATestDevice/SKATestDevice.xmi +++ b/skabase/SKATestDevice/SKATestDevice.xmi @@ -145,20 +145,21 @@ <enumLabels>ABORTED</enumLabels> <enumLabels>FAULT</enumLabels> </attributes> - <attributes name="obsMode" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false"> + <attributes name="obsMode" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="1000" maxX="" maxY="" allocReadMember="true" isDynamic="false"> <dataType xsi:type="pogoDsl:EnumType"/> + <changeEvent fire="false" libCheckCriteria="false"/> + <archiveEvent fire="false" libCheckCriteria="false"/> <dataReadyEvent fire="false" libCheckCriteria="true"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> <properties description="Observing Mode" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> <enumLabels>IDLE</enumLabels> - <enumLabels>IMG_CONTINUUM</enumLabels> - <enumLabels>IMG_SPECTRAL_LINE</enumLabels> - <enumLabels>IMG_ZOOM</enumLabels> - <enumLabels>PULSAR_SEARCH</enumLabels> - <enumLabels>TRANSIENT_SEARCH_FAST</enumLabels> - <enumLabels>TRANSIENT_SEARCH_SLOW</enumLabels> - <enumLabels>PULSAR_TIMING</enumLabels> + <enumLabels>IMAGING</enumLabels> + <enumLabels>PULSAR-SEARCH</enumLabels> + <enumLabels>PULSAR-TIMING</enumLabels> + <enumLabels>DYNAMIC-SPECTRUM</enumLabels> + <enumLabels>TRANSIENT-SEARCH</enumLabels> <enumLabels>VLBI</enumLabels> + <enumLabels>CALIBRATION</enumLabels> </attributes> <attributes name="configurationProgress" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false"> <dataType xsi:type="pogoDsl:UShortType"/> diff --git a/skabase/SKATestDevice/SKATestDevice/SKATestDevice.py b/skabase/SKATestDevice/SKATestDevice/SKATestDevice.py index 9f5ba088118a548bb0c8418be9c4972ff225d2f6..71017f7bd14fc04754336005a83d7c1bd6563925 100644 --- a/skabase/SKATestDevice/SKATestDevice/SKATestDevice.py +++ b/skabase/SKATestDevice/SKATestDevice/SKATestDevice.py @@ -27,13 +27,6 @@ from skabase.utils import (exception_manager, convert_api_value, coerce_value) __all__ = ["SKATestDevice", "main"] -logging.basicConfig() -logger = logging.getLogger("SKATestDevice") -syslogs = SysLogHandler(address='/dev/log', facility='syslog') -formatter = logging.Formatter('%(name)s: %(levelname)s %(module)s %(message)r') -syslogs.setFormatter(formatter) -logger.addHandler(syslogs) - class SKATestDevice(SKABaseDevice): """ @@ -61,9 +54,8 @@ class SKATestDevice(SKABaseDevice): obsMode = attribute( dtype='DevEnum', doc="Observing Mode", - enum_labels=["IDLE", "IMG_CONTINUUM", "IMG_SPECTRAL_LINE", "IMG_ZOOM", - "PULSAR_SEARCH", "TRANSIENT_SEARCH_FAST", "TRANSIENT_SEARCH_SLOW", - "PULSAR_TIMING", "VLBI", ], + enum_labels=["IDLE", "IMAGING", "PULSAR-SEARCH", "PULSAR-TIMING", "DYNAMIC-SPECTRUM", + "TRANSIENT-SEARCH", "VLBI", "CALIBRATION", ], ) configurationProgress = attribute( @@ -132,22 +124,6 @@ class SKATestDevice(SKABaseDevice): return 0 # PROTECTED REGION END # // SKATestDevice.configurationDelayExpected_read - def write_storageLoggingLevel(self, value): - """Sets the Storage Logging Level of the device""" - self._storage_logging_level = value - if self._storage_logging_level == int(tango.LogLevel.LOG_FATAL): - logger.setLevel(logging.FATAL) - elif self._storage_logging_level == int(tango.LogLevel.LOG_ERROR): - logger.setLevel(logging.ERROR) - elif self._storage_logging_level == int(tango.LogLevel.LOG_WARN): - logger.setLevel(logging.WARNING) - elif self._storage_logging_level == int(tango.LogLevel.LOG_INFO): - logger.setLevel(logging.INFO) - elif self._storage_logging_level == int(tango.LogLevel.LOG_DEBUG): - logger.setLevel(logging.DEBUG) - else: - logger.setLevel(logging.DEBUG) - # -------- # Commands # -------- @@ -200,60 +176,6 @@ class SKATestDevice(SKABaseDevice): return argout # PROTECTED REGION END # // SKATestDevice.RunGroupCommand - def dev_logging(self, dev_log_msg, dev_log_level): - # Element Level Logging - if self._element_logging_level >= int(tango.LogLevel.LOG_FATAL) and dev_log_level == int( - tango.LogLevel.LOG_FATAL): - self.fatal_stream(dev_log_msg) - elif self._element_logging_level >= int(tango.LogLevel.LOG_ERROR) and dev_log_level == int( - tango.LogLevel.LOG_ERROR): - self.error_stream(dev_log_msg) - elif self._element_logging_level >= int(tango.LogLevel.LOG_WARN) and dev_log_level == int( - tango.LogLevel.LOG_WARN): - self.warn_stream(dev_log_msg) - elif self._element_logging_level >= int(tango.LogLevel.LOG_INFO) and dev_log_level == int( - tango.LogLevel.LOG_INFO): - self.info_stream(dev_log_msg) - elif self._element_logging_level >= int(tango.LogLevel.LOG_DEBUG) and dev_log_level == int( - tango.LogLevel.LOG_DEBUG): - self.debug_stream(dev_log_msg) - - # Central Level Logging - if self._central_logging_level >= int(tango.LogLevel.LOG_FATAL) and dev_log_level == int( - tango.LogLevel.LOG_FATAL): - self.fatal_stream(dev_log_msg) - elif self._central_logging_level >= int(tango.LogLevel.LOG_ERROR) and dev_log_level == int( - tango.LogLevel.LOG_ERROR): - self.error_stream(dev_log_msg) - elif self._central_logging_level >= int(tango.LogLevel.LOG_WARN) and dev_log_level == int( - tango.LogLevel.LOG_WARN): - self.warn_stream(dev_log_msg) - elif self._central_logging_level >= int(tango.LogLevel.LOG_INFO) and dev_log_level == int( - tango.LogLevel.LOG_INFO): - self.info_stream(dev_log_msg) - elif self._central_logging_level >= int(tango.LogLevel.LOG_DEBUG) and dev_log_level == int( - tango.LogLevel.LOG_DEBUG): - self.debug_stream(dev_log_msg) - - # Storage Level Logging - if self._storage_logging_level >= int(tango.LogLevel.LOG_FATAL) and dev_log_level == int( - tango.LogLevel.LOG_FATAL): - logger.fatal(dev_log_msg) - elif self._storage_logging_level >= int(tango.LogLevel.LOG_ERROR) and dev_log_level == int( - tango.LogLevel.LOG_ERROR): - logger.error(dev_log_msg) - elif self._storage_logging_level >= int(tango.LogLevel.LOG_WARN) and dev_log_level == int( - tango.LogLevel.LOG_WARN): - logger.warn(dev_log_msg) - elif self._storage_logging_level >= int(tango.LogLevel.LOG_INFO) and dev_log_level == int( - tango.LogLevel.LOG_INFO): - logger.info(dev_log_msg) - elif self._storage_logging_level >= int(tango.LogLevel.LOG_DEBUG) and dev_log_level == int( - tango.LogLevel.LOG_DEBUG): - logger.debug(dev_log_msg) - else: - pass - @command( ) @DebugIt()