Added more customizable error logging and bug fixes! (0.28.0)

This commit is contained in:
Johannes Findeisen 2023-09-02 19:54:46 +02:00
commit c5fdd1cc4a
5 changed files with 48 additions and 23 deletions

View file

@ -20,7 +20,7 @@ from linspector.environment import Environment
from linspector.linspector import Linspector from linspector.linspector import Linspector
from linspector.monitors import Monitors from linspector.monitors import Monitors
__version__ = '0.27.1' __version__ = '0.28.0'
__author__ = 'Johannes Findeisen <you@hanez.org>' __author__ = 'Johannes Findeisen <you@hanez.org>'
sys.stderr = open('/dev/null', 'w') sys.stderr = open('/dev/null', 'w')
@ -68,7 +68,7 @@ def linspector():
log.remove() log.remove()
default_log_format = 'timestamp={time:YYYY-MM-DD HH:mm:ss.SSSSSS ZZ} uptime={elapsed} level={level} ' \ 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'): if configuration.get_option('linspector', 'logfile'):
logfile_count = '10' logfile_count = '10'
@ -90,10 +90,27 @@ def linspector():
log.add(configuration.get_option('linspector', 'logfile'), backtrace=True, diagnose=True, enqueue=True, 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) format=logfile_format, level=logfile_level, retention=int(logfile_count), rotation=logfile_size)
if configuration.get_option('linspector', 'logfile_error'): default_error_log_format = 'timestamp={time:YYYY-MM-DD HH:mm:ss.SSSSSS ZZ} uptime={elapsed} level={level} ' \
log.add(configuration.get_option('linspector', 'logfile_error'), backtrace=True, diagnose=True, 'name=linspector exec={name}:{function} line={line} {message}'
enqueue=True, format=logfile_format, level='ERROR', retention=int(logfile_count),
rotation=logfile_size) 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) environment = Environment(log)

View file

@ -9,19 +9,25 @@ max_processes = 1
max_threads = 2048 max_threads = 2048
pid_file = /var/run/user/1000/linspector.pid 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 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) ; number of logfiles to keep (default: 10)
logfile_count = 10 logfile_count = 10
; logfile format. this overrides the default configured in the code ; 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} logfile_format = [{time:YYYY-MM-DD HH:mm:ss.SSSSSS ZZ}] [{elapsed}] [{level}] [linspector]: {message}
; log level (default: INFO) ; log level (default: INFO)
logfile_level = INFO logfile_level = INFO
; max logfile size (default: 1MB) ; 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 = notifications =

View file

@ -23,10 +23,11 @@ class PortService(Service):
sock.close() sock.close()
error = 'None' error = 'None'
status = 'OK' status = 'OK'
except Exception as err: except Exception as err:
error = str(err) error = str(err)
status = 'ERROR' status = 'ERROR'
self._log.error(self.get_str(identifier, monitor.get_host(), service, status))
self._log.error(error)
return {'error': error.replace('\'', ''), return {'error': error.replace('\'', ''),
'host': monitor.get_host(), 'host': monitor.get_host(),

View file

@ -22,6 +22,7 @@ class IsConnectedService(Service):
user=kwargs['user'], user=kwargs['user'],
password=kwargs['password'], password=kwargs['password'],
timeout=10) timeout=10)
error = 'None' error = 'None'
if fc.is_connected: if fc.is_connected:
status = 'OK' status = 'OK'
@ -30,11 +31,11 @@ class IsConnectedService(Service):
except Exception as err: except Exception as err:
error = str(err) error = str(err)
status = 'ERROR' status = 'ERROR'
self._log.error(self.get_str(identifier, monitor.get_host(), service, status))
self._log.error(error)
result = {'error': error.replace('\'', ''), return {'error': error.replace('\'', ''),
'host': monitor.get_host(), 'host': monitor.get_host(),
'log': self.get_str(identifier, monitor.get_host(), service, status), 'log': self.get_str(identifier, monitor.get_host(), service, status),
'service': service, 'service': service,
'status': status} 'status': status}
return result

View file

@ -46,7 +46,7 @@ class MySQLTask(Task):
self._user = self._configuration.get_option('tasks', 'mysql_user') self._user = self._configuration.get_option('tasks', 'mysql_user')
except Exception as err: 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): def execute(self, host, identifier, json, log, service, status, timestamp):
try: try:
@ -57,7 +57,7 @@ class MySQLTask(Task):
user=self._user) user=self._user)
self._log.debug(self._connection) self._log.debug(self._connection)
except Exception as err: 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: try:
with (self._connection): with (self._connection):
@ -82,4 +82,4 @@ class MySQLTask(Task):
cursor.execute(sql) cursor.execute(sql)
self._connection.commit() self._connection.commit()
except Exception as err: except Exception as err:
self._log.warning('task mysql query failed: {0}'.format(err)) self._log.error('task mysql query failed: {0}'.format(err))