From c5fdd1cc4ae1c32565d3818d0892175d31f3d00c Mon Sep 17 00:00:00 2001 From: Johannes Findeisen Date: Sat, 2 Sep 2023 19:54:46 +0200 Subject: [PATCH] Added more customizable error logging and bug fixes! (0.28.0) --- bin/linspector | 29 +++++++++++++++---- etc/linspector.conf | 16 ++++++---- linspector/services/net/port.py | 3 +- .../services/vendor/avm/is_connected.py | 15 +++++----- linspector/tasks/mysql.py | 6 ++-- 5 files changed, 47 insertions(+), 22 deletions(-) diff --git a/bin/linspector b/bin/linspector index 0858b83..b66b5d2 100755 --- a/bin/linspector +++ b/bin/linspector @@ -20,7 +20,7 @@ from linspector.environment import Environment from linspector.linspector import Linspector from linspector.monitors import Monitors -__version__ = '0.27.1' +__version__ = '0.28.0' __author__ = 'Johannes Findeisen ' sys.stderr = open('/dev/null', 'w') @@ -68,7 +68,7 @@ def linspector(): log.remove() default_log_format = 'timestamp={time:YYYY-MM-DD HH:mm:ss.SSSSSS ZZ} uptime={elapsed} level={level} ' \ - 'name=linspector exec={name}:{function} line={line} {message}' + 'name=linspector {message}' if configuration.get_option('linspector', 'logfile'): logfile_count = '10' @@ -90,10 +90,27 @@ def linspector(): log.add(configuration.get_option('linspector', 'logfile'), backtrace=True, diagnose=True, enqueue=True, format=logfile_format, level=logfile_level, retention=int(logfile_count), rotation=logfile_size) - if configuration.get_option('linspector', 'logfile_error'): - log.add(configuration.get_option('linspector', 'logfile_error'), backtrace=True, diagnose=True, - enqueue=True, format=logfile_format, level='ERROR', retention=int(logfile_count), - rotation=logfile_size) + default_error_log_format = 'timestamp={time:YYYY-MM-DD HH:mm:ss.SSSSSS ZZ} uptime={elapsed} level={level} ' \ + 'name=linspector exec={name}:{function} line={line} {message}' + + if configuration.get_option('linspector', 'error_logfile'): + error_logfile_count = '10' + if configuration.get_option('linspector', 'error_logfile_count'): + logfile_count = configuration.get_option('linspector', 'error_logfile_count') + + error_logfile_format = default_error_log_format + if configuration.get_option('linspector', 'error_logfile_format'): + logfile_format = configuration.get_option('linspector', 'error_logfile_format') + + error_logfile_level = 'ERROR' + + error_logfile_size = '1MB' + if configuration.get_option('linspector', 'error_logfile_size'): + error_logfile_size = configuration.get_option('linspector', 'error_logfile_size') + + log.add(configuration.get_option('linspector', 'error_logfile'), backtrace=True, diagnose=True, + enqueue=True, format=error_logfile_format, level=error_logfile_level, + retention=int(error_logfile_count), rotation=error_logfile_size) environment = Environment(log) diff --git a/etc/linspector.conf b/etc/linspector.conf index 09d623c..cfc4160 100644 --- a/etc/linspector.conf +++ b/etc/linspector.conf @@ -9,19 +9,25 @@ max_processes = 1 max_threads = 2048 pid_file = /var/run/user/1000/linspector.pid -; logfile to use (if not set set no output will be logged somewhere) +; logfile (do not set to disable logging) logfile = /home/hanez/code/linspector/linspector/log/linspector.log -; the error logfile -logfile_error = /home/hanez/code/linspector/linspector/log/error.log ; number of logfiles to keep (default: 10) logfile_count = 10 ; logfile format. this overrides the default configured in the code -;logfile_format = [{time:YYYY-MM-DD HH:mm:ss.SSSSSS ZZ}] [{elapsed}] [{level}] [linspector] [{name}:{function}:{line}]: {message} logfile_format = [{time:YYYY-MM-DD HH:mm:ss.SSSSSS ZZ}] [{elapsed}] [{level}] [linspector]: {message} ; log level (default: INFO) logfile_level = INFO ; max logfile size (default: 1MB) -logfile_size = 10MB +logfile_size = 5MB + +; error logfile (do not set to disable error logging) +error_logfile = /home/hanez/code/linspector/linspector/log/error.log +; number of error logfiles to keep (default: 10) +error_logfile_count = 10 +; error logfile format. this overrides the default configured in the code +error_logfile_format = [{time:YYYY-MM-DD HH:mm:ss.SSSSSS ZZ}] [{elapsed}] [{level}] [linspector] [{name}:{function}:{line}]: {message} +; max error logfile size (default: 1MB) +error_logfile_size = 5MB notifications = diff --git a/linspector/services/net/port.py b/linspector/services/net/port.py index c87ac87..f9862e1 100644 --- a/linspector/services/net/port.py +++ b/linspector/services/net/port.py @@ -23,10 +23,11 @@ class PortService(Service): sock.close() error = 'None' status = 'OK' - except Exception as err: error = str(err) status = 'ERROR' + self._log.error(self.get_str(identifier, monitor.get_host(), service, status)) + self._log.error(error) return {'error': error.replace('\'', ''), 'host': monitor.get_host(), diff --git a/linspector/services/vendor/avm/is_connected.py b/linspector/services/vendor/avm/is_connected.py index ee34560..cb28795 100644 --- a/linspector/services/vendor/avm/is_connected.py +++ b/linspector/services/vendor/avm/is_connected.py @@ -22,6 +22,7 @@ class IsConnectedService(Service): user=kwargs['user'], password=kwargs['password'], timeout=10) + error = 'None' if fc.is_connected: status = 'OK' @@ -30,11 +31,11 @@ class IsConnectedService(Service): except Exception as err: error = str(err) status = 'ERROR' + self._log.error(self.get_str(identifier, monitor.get_host(), service, status)) + self._log.error(error) - result = {'error': error.replace('\'', ''), - 'host': monitor.get_host(), - 'log': self.get_str(identifier, monitor.get_host(), service, status), - 'service': service, - 'status': status} - - return result + return {'error': error.replace('\'', ''), + 'host': monitor.get_host(), + 'log': self.get_str(identifier, monitor.get_host(), service, status), + 'service': service, + 'status': status} diff --git a/linspector/tasks/mysql.py b/linspector/tasks/mysql.py index 6f437fd..f05773a 100644 --- a/linspector/tasks/mysql.py +++ b/linspector/tasks/mysql.py @@ -46,7 +46,7 @@ class MySQLTask(Task): self._user = self._configuration.get_option('tasks', 'mysql_user') except Exception as err: - log.warning('task configuration error: {0}'.format(err)) + log.error('task mysql configuration error: {0}'.format(err)) def execute(self, host, identifier, json, log, service, status, timestamp): try: @@ -57,7 +57,7 @@ class MySQLTask(Task): user=self._user) self._log.debug(self._connection) except Exception as err: - self._log.warning('task mysql connection failed: {0}'.format(err)) + self._log.error('task mysql connection failed: {0}'.format(err)) try: with (self._connection): @@ -82,4 +82,4 @@ class MySQLTask(Task): cursor.execute(sql) self._connection.commit() except Exception as err: - self._log.warning('task mysql query failed: {0}'.format(err)) + self._log.error('task mysql query failed: {0}'.format(err))