Skip to content
Snippets Groups Projects
Unverified Commit aee6c342 authored by Lochan Babani's avatar Lochan Babani Committed by GitHub
Browse files

Merge pull request #86 from ska-telescope/optimize_base_class

Move dev_logging in SKABaseDevice. Minor fixes.
parents 6aa1a5de 575480da
Branches
Tags
No related merge requests found
......@@ -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.
......
......@@ -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):
......
......@@ -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[:]):
......
......@@ -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 = """"""
......@@ -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(
......
......@@ -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"/>
......
......@@ -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()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment