mirror of
https://github.com/thingsboard/thingsboard-gateway
synced 2025-10-26 22:31:42 +08:00
Improvements for Remote Logging and OPC-UA
This commit is contained in:
@@ -15,7 +15,7 @@
|
|||||||
import logging
|
import logging
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
|
|
||||||
log = logging.getLogger("tb_gateway.connector")
|
log = logging.getLogger("connector")
|
||||||
|
|
||||||
|
|
||||||
class Connector(ABC):
|
class Connector(ABC):
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
import logging
|
import logging
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
|
|
||||||
log = logging.getLogger("tb_gateway.converter")
|
log = logging.getLogger("converter")
|
||||||
|
|
||||||
|
|
||||||
class Converter(ABC):
|
class Converter(ABC):
|
||||||
|
|||||||
@@ -105,8 +105,11 @@ class OpcUaConnector(Thread, Connector):
|
|||||||
self.__opcua_nodes["root"] = self.client.get_root_node()
|
self.__opcua_nodes["root"] = self.client.get_root_node()
|
||||||
self.__opcua_nodes["objects"] = self.client.get_objects_node()
|
self.__opcua_nodes["objects"] = self.client.get_objects_node()
|
||||||
sub = self.client.create_subscription(self.__server_conf.get("scanPeriodInMillis", 500), self.__sub_handler)
|
sub = self.client.create_subscription(self.__server_conf.get("scanPeriodInMillis", 500), self.__sub_handler)
|
||||||
self.__search_name(self.__opcua_nodes["objects"], 2)
|
# self.__search_name(self.__opcua_nodes["objects"], 2)
|
||||||
self.__search_tags(self.__opcua_nodes["objects"], 2, sub)
|
# self.__search_tags(self.__opcua_nodes["objects"], 2, sub)
|
||||||
|
|
||||||
|
self.__search_name(self.__opcua_nodes["root"], 0)
|
||||||
|
self.__search_tags(self.__opcua_nodes["root"], 0, sub)
|
||||||
log.debug('Subscriptions: %s', self.subscribed)
|
log.debug('Subscriptions: %s', self.subscribed)
|
||||||
|
|
||||||
log.debug("Available methods: %s", self.__available_object_resources)
|
log.debug("Available methods: %s", self.__available_object_resources)
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import time
|
|||||||
from thingsboard_gateway.tb_client.tb_gateway_mqtt import TBGatewayMqttClient
|
from thingsboard_gateway.tb_client.tb_gateway_mqtt import TBGatewayMqttClient
|
||||||
import threading
|
import threading
|
||||||
|
|
||||||
log = logging.getLogger("tb_gateway.tb_connection")
|
log = logging.getLogger("tb_connection")
|
||||||
|
|
||||||
|
|
||||||
class TBClient(threading.Thread):
|
class TBClient(threading.Thread):
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ from os import remove
|
|||||||
from thingsboard_gateway.gateway.tb_client import TBClient
|
from thingsboard_gateway.gateway.tb_client import TBClient
|
||||||
from thingsboard_gateway.gateway.tb_logger import TBLoggerHandler
|
from thingsboard_gateway.gateway.tb_logger import TBLoggerHandler
|
||||||
|
|
||||||
log = getLogger("tb_gateway.service")
|
log = getLogger("service")
|
||||||
|
|
||||||
|
|
||||||
class RemoteConfigurator:
|
class RemoteConfigurator:
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ from thingsboard_gateway.storage.memory_event_storage import MemoryEventStorage
|
|||||||
from thingsboard_gateway.storage.file_event_storage import FileEventStorage
|
from thingsboard_gateway.storage.file_event_storage import FileEventStorage
|
||||||
from thingsboard_gateway.gateway.tb_gateway_remote_configurator import RemoteConfigurator
|
from thingsboard_gateway.gateway.tb_gateway_remote_configurator import RemoteConfigurator
|
||||||
|
|
||||||
log = logging.getLogger('tb_gateway.service')
|
log = logging.getLogger('service')
|
||||||
main_handler = logging.handlers.MemoryHandler(-1)
|
main_handler = logging.handlers.MemoryHandler(-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -43,8 +43,8 @@ class TBGatewayService:
|
|||||||
config = safe_load(config)
|
config = safe_load(config)
|
||||||
self._config_dir = path.dirname(path.abspath(config_file)) + '/'
|
self._config_dir = path.dirname(path.abspath(config_file)) + '/'
|
||||||
logging.config.fileConfig(self._config_dir + "logs.conf")
|
logging.config.fileConfig(self._config_dir + "logs.conf")
|
||||||
# global log
|
global log
|
||||||
# log = logging.getLogger('tb_gateway.service')
|
log = logging.getLogger('service')
|
||||||
self.available_connectors = {}
|
self.available_connectors = {}
|
||||||
self.__connector_incoming_messages = {}
|
self.__connector_incoming_messages = {}
|
||||||
self.__connected_devices = {}
|
self.__connected_devices = {}
|
||||||
@@ -132,6 +132,7 @@ class TBGatewayService:
|
|||||||
str(connector_camel_case + ' EventsSent').replace(' ', '')]
|
str(connector_camel_case + ' EventsSent').replace(' ', '')]
|
||||||
self.tb_client.client.send_telemetry(summary_messages)
|
self.tb_client.client.send_telemetry(summary_messages)
|
||||||
gateway_statistic_send = time.time()
|
gateway_statistic_send = time.time()
|
||||||
|
self.__check_shared_attributes()
|
||||||
except KeyboardInterrupt as e:
|
except KeyboardInterrupt as e:
|
||||||
log.info("Stopping...")
|
log.info("Stopping...")
|
||||||
self.__close_connectors()
|
self.__close_connectors()
|
||||||
@@ -170,12 +171,15 @@ class TBGatewayService:
|
|||||||
self.__remote_configurator.process_configuration(content.get("configuration"))
|
self.__remote_configurator.process_configuration(content.get("configuration"))
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
log.exception(e)
|
log.exception(e)
|
||||||
if (shared_attributes is not None and shared_attributes.get('RemoteLoggingLevel') == 'NONE') or content.get("RemoteLoggingLevel") == 'NONE':
|
remote_logging_level = shared_attributes.get('RemoteLoggingLevel', content.get("RemoteLoggingLevel"))
|
||||||
|
if remote_logging_level == 'NONE':
|
||||||
self.remote_handler.deactivate()
|
self.remote_handler.deactivate()
|
||||||
log.info('Remote logging has being deactivated.')
|
log.info('Remote logging has being deactivated.')
|
||||||
elif (shared_attributes is not None and shared_attributes.get('RemoteLoggingLevel') is not None) or content.get("RemoteLoggingLevel") is not None:
|
elif remote_logging_level is not None:
|
||||||
self.remote_handler.activate(content.get('RemoteLoggingLevel'))
|
if self.remote_handler.current_log_level != remote_logging_level:
|
||||||
log.info('Remote logging has being activated.')
|
self.remote_handler.activate(remote_logging_level)
|
||||||
|
if not self.remote_handler.activated:
|
||||||
|
log.info('Remote logging has being activated.')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
log.exception(e)
|
log.exception(e)
|
||||||
|
|
||||||
|
|||||||
@@ -20,14 +20,15 @@ from time import time
|
|||||||
|
|
||||||
class TBLoggerHandler(logging.Handler):
|
class TBLoggerHandler(logging.Handler):
|
||||||
def __init__(self, gateway):
|
def __init__(self, gateway):
|
||||||
self.__current_log_level = 'DEBUG'
|
self.current_log_level = 'NONE'
|
||||||
super().__init__(logging.getLevelName(self.__current_log_level))
|
super().__init__(logging.getLevelName(self.__current_log_level))
|
||||||
self.__gateway = gateway
|
self.__gateway = gateway
|
||||||
self.activated = False
|
self.activated = False
|
||||||
self.loggers = ['tb_gateway.service',
|
self.loggers = ['service',
|
||||||
'tb_gateway.storage',
|
'storage',
|
||||||
'tb_gateway.extension',
|
'extension',
|
||||||
'tb_gateway.connector'
|
'connector',
|
||||||
|
'tb_connection'
|
||||||
]
|
]
|
||||||
for logger in self.loggers:
|
for logger in self.loggers:
|
||||||
log = logging.getLogger(logger)
|
log = logging.getLogger(logger)
|
||||||
@@ -38,12 +39,15 @@ class TBLoggerHandler(logging.Handler):
|
|||||||
try:
|
try:
|
||||||
for logger in self.loggers:
|
for logger in self.loggers:
|
||||||
if log_level is not None and logging.getLevelName(log_level) is not None:
|
if log_level is not None and logging.getLevelName(log_level) is not None:
|
||||||
log = logging.getLogger(logger)
|
if logger == 'tb_connection' and log_level == 'DEBUG':
|
||||||
# log.addHandler(self)
|
log = logging.getLogger(logger)
|
||||||
self.__current_log_level = log_level
|
log.setLevel(logging.getLevelName('INFO'))
|
||||||
log.setLevel(logging.getLevelName(log_level))
|
else:
|
||||||
|
log = logging.getLogger(logger)
|
||||||
|
self.__current_log_level = log_level
|
||||||
|
log.setLevel(logging.getLevelName(log_level))
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
log = logging.getLogger('tb_gateway.service')
|
log = logging.getLogger('service')
|
||||||
log.exception(e)
|
log.exception(e)
|
||||||
self.activated = True
|
self.activated = True
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
from logging import getLogger
|
from logging import getLogger
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
|
|
||||||
log = getLogger("tb_gateway.storage")
|
log = getLogger("storage")
|
||||||
|
|
||||||
class EventStorage(ABC):
|
class EventStorage(ABC):
|
||||||
|
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ ATTRIBUTES_TOPIC = 'v1/devices/me/attributes'
|
|||||||
ATTRIBUTES_TOPIC_REQUEST = 'v1/devices/me/attributes/request/'
|
ATTRIBUTES_TOPIC_REQUEST = 'v1/devices/me/attributes/request/'
|
||||||
ATTRIBUTES_TOPIC_RESPONSE = 'v1/devices/me/attributes/response/'
|
ATTRIBUTES_TOPIC_RESPONSE = 'v1/devices/me/attributes/response/'
|
||||||
TELEMETRY_TOPIC = 'v1/devices/me/telemetry'
|
TELEMETRY_TOPIC = 'v1/devices/me/telemetry'
|
||||||
log = logging.getLogger("tb_gateway.tb_connection")
|
log = logging.getLogger("tb_connection")
|
||||||
log.setLevel(logging.DEBUG)
|
log.setLevel(logging.DEBUG)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ GATEWAY_ATTRIBUTES_RESPONSE_TOPIC = "v1/gateway/attributes/response"
|
|||||||
GATEWAY_MAIN_TOPIC = "v1/gateway/"
|
GATEWAY_MAIN_TOPIC = "v1/gateway/"
|
||||||
GATEWAY_RPC_TOPIC = "v1/gateway/rpc"
|
GATEWAY_RPC_TOPIC = "v1/gateway/rpc"
|
||||||
|
|
||||||
log = logging.getLogger("tb_gateway.tb_connection")
|
log = logging.getLogger("tb_connection")
|
||||||
log.setLevel(logging.DEBUG)
|
log.setLevel(logging.DEBUG)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user