mirror of
https://github.com/thingsboard/thingsboard-gateway
synced 2025-10-26 22:31:42 +08:00
Added errors count resetting every 60 sec
This commit is contained in:
parent
6863d008bd
commit
9056bf9a1c
|
|
@ -111,7 +111,7 @@ class BACnetConnector(Thread, Connector):
|
|||
def close(self):
|
||||
self.__stopped = True
|
||||
self.__connected = False
|
||||
self._log.reset()
|
||||
self._log.stop()
|
||||
|
||||
self._application.mux.directPort.connected = False
|
||||
self._application.mux.directPort.accepting = False
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ class BLEConnector(Connector, Thread):
|
|||
self.__devices = []
|
||||
|
||||
self.__log.info('%s has been stopped.', self.get_name())
|
||||
self.__log.reset()
|
||||
self.__log.stop()
|
||||
|
||||
def get_name(self):
|
||||
return self.name
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ class CanConnector(Connector, Thread):
|
|||
if not self.__stopped:
|
||||
self.__stopped = True
|
||||
self._log.debug("[%s] Stopping", self.get_name())
|
||||
self._log.reset()
|
||||
self._log.stop()
|
||||
|
||||
def get_name(self):
|
||||
return self.name
|
||||
|
|
|
|||
|
|
@ -189,7 +189,7 @@ class FTPConnector(Connector, Thread):
|
|||
def close(self):
|
||||
self.__stopped = True
|
||||
self.__log.info('FTP Connector stopped.')
|
||||
self.__log.reset()
|
||||
self.__log.stop()
|
||||
|
||||
def get_name(self):
|
||||
return self.name
|
||||
|
|
|
|||
|
|
@ -343,7 +343,7 @@ class ModbusConnector(Connector, Thread):
|
|||
|
||||
# self.__slave_thread.join()
|
||||
self.__log.info('%s has been stopped.', self.get_name())
|
||||
self.__log.reset()
|
||||
self.__log.stop()
|
||||
self.__stopping = False
|
||||
|
||||
def get_name(self):
|
||||
|
|
|
|||
|
|
@ -341,7 +341,7 @@ class MqttConnector(Connector, Thread):
|
|||
for worker in self.__workers_thread_pool:
|
||||
worker.stop()
|
||||
self.__log.info('%s has been stopped.', self.get_name())
|
||||
self.__log.reset()
|
||||
self.__log.stop()
|
||||
|
||||
def get_name(self):
|
||||
return self.name
|
||||
|
|
|
|||
|
|
@ -220,7 +220,7 @@ class OcppConnector(Connector, Thread):
|
|||
self.__loop.stop()
|
||||
|
||||
self._log.info('%s has been stopped.', self.get_name())
|
||||
self._log.reset()
|
||||
self._log.stop()
|
||||
|
||||
def get_id(self):
|
||||
return self.__id
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ class OdbcConnector(Connector, Thread):
|
|||
if not self.__stopped:
|
||||
self.__stopped = True
|
||||
self._log.debug("[%s] Stopping", self.get_name())
|
||||
self._log.reset()
|
||||
self._log.stop()
|
||||
|
||||
def get_id(self):
|
||||
return self.__id
|
||||
|
|
|
|||
|
|
@ -244,7 +244,7 @@ class OpcUaConnector(Thread, Connector):
|
|||
pass
|
||||
self.__connected = False
|
||||
self._log.info('%s has been stopped.', self.get_name())
|
||||
self._log.reset()
|
||||
self._log.stop()
|
||||
|
||||
def get_id(self):
|
||||
return self.__id
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ class OpcUaConnectorAsyncIO(Connector, Thread):
|
|||
self.__stopped = True
|
||||
self.__connected = False
|
||||
self.__log.info('%s has been stopped.', self.get_name())
|
||||
self.__log.reset()
|
||||
self.__log.stop()
|
||||
|
||||
async def __reset_node(self, node):
|
||||
node['valid'] = False
|
||||
|
|
|
|||
|
|
@ -322,7 +322,7 @@ class RequestConnector(Connector, Thread):
|
|||
|
||||
def close(self):
|
||||
self.__stopped = True
|
||||
self._log.reset()
|
||||
self._log.stop()
|
||||
|
||||
def get_config(self):
|
||||
return self.__config
|
||||
|
|
|
|||
|
|
@ -200,7 +200,7 @@ class RESTConnector(Connector, Thread):
|
|||
if not self._loop.is_closed():
|
||||
self._loop.call_soon_threadsafe(self._loop.stop)
|
||||
self.__log.info('REST connector stopped.')
|
||||
self.__log.reset()
|
||||
self.__log.stop()
|
||||
self.join()
|
||||
|
||||
def get_id(self):
|
||||
|
|
|
|||
|
|
@ -311,7 +311,7 @@ class SocketConnector(Connector, Thread):
|
|||
pass # Ignore errors when socket is already closed
|
||||
self.__socket.close()
|
||||
sleep(0.01)
|
||||
self.__log.reset()
|
||||
self.__log.stop()
|
||||
|
||||
def get_name(self):
|
||||
return self.name
|
||||
|
|
|
|||
|
|
@ -203,7 +203,7 @@ class XMPPConnector(Connector, Thread):
|
|||
self.__stopped = True
|
||||
self._connected = False
|
||||
self.__log.info('%s has been stopped.', self.get_name())
|
||||
self.__log.reset()
|
||||
self.__log.stop()
|
||||
|
||||
def get_id(self):
|
||||
return self.__id
|
||||
|
|
|
|||
|
|
@ -159,7 +159,7 @@ class CustomSerialConnector(Thread, Connector): # Define a connector class, it
|
|||
self.__gateway.del_device(self.__devices[device]["device_config"]["name"])
|
||||
if self.__devices[device]['serial'].isOpen():
|
||||
self.__devices[device]['serial'].close()
|
||||
self._log.reset()
|
||||
self._log.stop()
|
||||
|
||||
def on_attributes_update(self, content): # Function used for processing attribute update requests from ThingsBoard
|
||||
self._log.debug(content)
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
# limitations under the License.
|
||||
|
||||
import logging
|
||||
from time import sleep
|
||||
from time import sleep, time
|
||||
from threading import Thread
|
||||
|
||||
|
||||
|
|
@ -51,24 +51,38 @@ def init_logger(gateway, name, level, enable_remote_logging=False):
|
|||
class TbLogger(logging.Logger):
|
||||
ALL_ERRORS_COUNT = 0
|
||||
IS_ALL_ERRORS_COUNT_RESET = False
|
||||
RESET_ERRORS__PERIOD = 60
|
||||
|
||||
def __init__(self, name, gateway=None, level=logging.NOTSET):
|
||||
super(TbLogger, self).__init__(name=name, level=level)
|
||||
self.propagate = True
|
||||
self.parent = self.root
|
||||
self._gateway = gateway
|
||||
self._stopped = False
|
||||
self.errors = 0
|
||||
self.attr_name = self.name + '_ERRORS_COUNT'
|
||||
self._is_on_init_state = True
|
||||
if self._gateway:
|
||||
self._send_errors_thread = Thread(target=self._send_errors, name='Send Errors Thread', daemon=True)
|
||||
self._send_errors_thread = Thread(target=self._send_errors, name='[LOGGER] Send Errors Thread', daemon=True)
|
||||
self._send_errors_thread.start()
|
||||
|
||||
self._start_time = time()
|
||||
self._reset_errors_thread = Thread(target=self._reset_errors_timer, name='[LOGGER] Reset Errors Thread',
|
||||
daemon=True)
|
||||
self._reset_errors_thread.start()
|
||||
|
||||
def reset(self):
|
||||
"""
|
||||
!!!Need to be called manually in the connector 'close' method!!!
|
||||
"""
|
||||
TbLogger.ALL_ERRORS_COUNT = TbLogger.ALL_ERRORS_COUNT - self.errors
|
||||
if TbLogger.ALL_ERRORS_COUNT > 0 and self.errors > 0:
|
||||
TbLogger.ALL_ERRORS_COUNT = TbLogger.ALL_ERRORS_COUNT - self.errors
|
||||
self.errors = 0
|
||||
self._send_error_count()
|
||||
|
||||
def stop(self):
|
||||
self.reset()
|
||||
self._stopped = True
|
||||
|
||||
@property
|
||||
def gateway(self):
|
||||
|
|
@ -94,21 +108,32 @@ class TbLogger(logging.Logger):
|
|||
TbLogger.IS_ALL_ERRORS_COUNT_RESET = True
|
||||
self._is_on_init_state = False
|
||||
|
||||
def _reset_errors_timer(self):
|
||||
while not self._stopped:
|
||||
if time() - self._start_time >= TbLogger.RESET_ERRORS__PERIOD:
|
||||
self.reset()
|
||||
self._start_time = time()
|
||||
|
||||
sleep(1)
|
||||
|
||||
def error(self, msg, *args, **kwargs):
|
||||
kwargs['stacklevel'] = 2
|
||||
super(TbLogger, self).error(msg, *args, **kwargs)
|
||||
self._add_error()
|
||||
self._send_error_count()
|
||||
|
||||
def exception(self, msg, *args, **kwargs) -> None:
|
||||
attr_name = kwargs.pop('attr_name', None)
|
||||
kwargs['stacklevel'] = 2
|
||||
super(TbLogger, self).exception(msg, *args, **kwargs)
|
||||
self._add_error()
|
||||
self._send_error_count(error_attr_name=attr_name)
|
||||
|
||||
def _send_error_count(self, error_attr_name=None):
|
||||
def _add_error(self):
|
||||
TbLogger.ALL_ERRORS_COUNT += 1
|
||||
self.errors += 1
|
||||
|
||||
def _send_error_count(self, error_attr_name=None):
|
||||
while self._is_on_init_state:
|
||||
sleep(.2)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user