Migrated to Loguru for logging and set up basic configuration, but it still needs adjustments. (0.21)
This commit is contained in:
parent
6226c59946
commit
5843f4358f
4 changed files with 58 additions and 43 deletions
3
Makefile
3
Makefile
|
|
@ -36,5 +36,8 @@ help:
|
||||||
run:
|
run:
|
||||||
PYTHONPATH=$(shell pwd):$(shell pwd)/venv/lib/python$(PYTHON_VERSION)/site-packages/ bin/linspector -s ./etc
|
PYTHONPATH=$(shell pwd):$(shell pwd)/venv/lib/python$(PYTHON_VERSION)/site-packages/ bin/linspector -s ./etc
|
||||||
|
|
||||||
|
rundev:
|
||||||
|
PYTHONPATH=$(shell pwd):$(shell pwd)/venv/lib/python$(PYTHON_VERSION)/site-packages/ bin/linspector -s ./etc.local
|
||||||
|
|
||||||
daemon:
|
daemon:
|
||||||
PYTHONPATH=$(shell pwd):$(shell pwd)/venv/lib/python$(PYTHON_VRESION)/site-packages/ bin/linspector -d ./etc
|
PYTHONPATH=$(shell pwd):$(shell pwd)/venv/lib/python$(PYTHON_VRESION)/site-packages/ bin/linspector -d ./etc
|
||||||
|
|
|
||||||
|
|
@ -72,12 +72,12 @@ See TODO for internal tasks.
|
||||||
|
|
||||||
Currently, the Linspector core requires the following 3rd party libraries:
|
Currently, the Linspector core requires the following 3rd party libraries:
|
||||||
|
|
||||||
- [APScheduler](https://github.com/agronholm/apscheduler)- Apscheduler is the scheduler used in
|
- [APScheduler](https://pypi.org/project/APScheduler/)- Apscheduler is the scheduler used in
|
||||||
Linspector for the execution of monitors. I started
|
Linspector for the execution of monitors. I started
|
||||||
to use this library in very early versions of Linspector in 2011. Since the main task
|
to use this library in very early versions of Linspector in 2011. Since the main task
|
||||||
in Linspector is the execution of jobs in regularly intervals I believe it is the right
|
in Linspector is the execution of jobs in regularly intervals I believe it is the right
|
||||||
decision to make use of APScheduler directly in the core of the Linspector project.
|
decision to make use of APScheduler directly in the core of the Linspector project.
|
||||||
- [Loguru](https://github.com/Delgan/loguru) - Linspector uses Loguru for file based logging. Loguru is a library
|
- [Loguru](https://pypi.org/project/loguru/) - Linspector uses Loguru for file based logging. Loguru is a library
|
||||||
which aims to bring enjoyable logging in Python.
|
which aims to bring enjoyable logging in Python.
|
||||||
|
|
||||||
### Other used libraries
|
### Other used libraries
|
||||||
|
|
@ -131,8 +131,7 @@ scheme (See: [https://semver.org/](https://semver.org/)):
|
||||||
- 15.10 - Date based release
|
- 15.10 - Date based release
|
||||||
- 23 - Serial release
|
- 23 - Serial release
|
||||||
|
|
||||||
(More
|
(More information: [https://packaging.python.org/en/latest/guides/distributing-packages-using-setuptools/#choosing-a-versioning-scheme](https://packaging.python.org/en/latest/guides/distributing-packages-using-setuptools/#choosing-a-versioning-scheme) &
|
||||||
information: [https://packaging.python.org/en/latest/guides/distributing-packages-using-setuptools/#choosing-a-versioning-scheme](https://packaging.python.org/en/latest/guides/distributing-packages-using-setuptools/#choosing-a-versioning-scheme) &
|
|
||||||
[https://peps.python.org/pep-0440/#public-version-identifiers](https://peps.python.org/pep-0440/#public-version-identifiers))
|
[https://peps.python.org/pep-0440/#public-version-identifiers](https://peps.python.org/pep-0440/#public-version-identifiers))
|
||||||
|
|
||||||
### Configuration file rules
|
### Configuration file rules
|
||||||
|
|
|
||||||
|
|
@ -14,10 +14,10 @@ import sys
|
||||||
from linspector.configuration import Configuration
|
from linspector.configuration import Configuration
|
||||||
from linspector.environment import Environment
|
from linspector.environment import Environment
|
||||||
from linspector.linspector import Linspector
|
from linspector.linspector import Linspector
|
||||||
from linspector.logger import Log
|
|
||||||
from linspector.monitors import Monitors
|
from linspector.monitors import Monitors
|
||||||
|
from loguru import logger
|
||||||
|
|
||||||
__version__ = '0.20.5'
|
__version__ = '0.21'
|
||||||
__author__ = 'Johannes Findeisen <you@hanez.org>'
|
__author__ = 'Johannes Findeisen <you@hanez.org>'
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -62,49 +62,61 @@ def main():
|
||||||
tasks = {}
|
tasks = {}
|
||||||
|
|
||||||
try:
|
try:
|
||||||
configuration = Configuration(args.configuration_path)
|
configuration = Configuration(args.configuration_path, logger)
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
print('[linspector] configuration error: {0}'.format(err))
|
logger.error('configuration error: {0}'.format(err))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
log = Log(configuration, args.stdout, args.verbose)
|
logger.remove()
|
||||||
environment = Environment(log)
|
log_level = "ERROR"
|
||||||
|
if configuration.get_option('linspector', 'log_level'):
|
||||||
|
log_level = configuration.get_option('linspector', 'log_level')
|
||||||
|
|
||||||
|
logger.add(sys.stderr, backtrace=True, colorize=True, diagnose=True, level=log_level)
|
||||||
|
# log.add(sys.stderr, backtrace=True, colorize=True, diagnose=True, format="{time} [{level}]: {message}", level="INFO")
|
||||||
|
# log.add(sys.stderr, format="{time} {level} {message}", filter="my_module", level="INFO")
|
||||||
|
if configuration.get_option('linspector', 'logfile'):
|
||||||
|
logger.add(configuration.get_option('linspector', 'logfile'), backtrace=True, diagnose=True, enqueue=True,
|
||||||
|
level=configuration.get_option('linspector', 'logfile_level'))
|
||||||
|
|
||||||
|
environment = Environment(logger)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
monitors = Monitors(configuration, environment, log, notifications, services, tasks)
|
monitors = Monitors(configuration, environment, logger, notifications, services, tasks)
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
log.warning('[linspector] monitor initialization error: {0}'.format(err))
|
logger.warning('monitor initialization error: {0}'.format(err))
|
||||||
|
|
||||||
try:
|
try:
|
||||||
linspector = Linspector(configuration, environment, log, monitors, plugins, scheduler)
|
linspector = Linspector(configuration, environment, logger, monitors, plugins, scheduler)
|
||||||
# linspector.print_debug()
|
# linspector.print_debug()
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
log.critical('[linspector] core initialization error: {0}'.format(err))
|
logger.critical('core initialization error: {0}'.format(err))
|
||||||
|
logger.critical('program terminating...')
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# daemon initialization
|
# daemon initialization
|
||||||
if args.daemon:
|
if args.daemon:
|
||||||
try:
|
try:
|
||||||
from linspector.linspectord import Linspectord
|
from linspector.linspectord import Linspectord
|
||||||
linspectord = Linspectord(configuration, environment, linspector, log)
|
linspectord = Linspectord(configuration, environment, linspector, logger)
|
||||||
# do handling of restart, start and stop commands but for now "start" is enough... ;)
|
# do handling of restart, start and stop commands but for now "start" is enough... ;)
|
||||||
if args.kill:
|
if args.kill:
|
||||||
log.info('[linspector] stopping daemon.')
|
logger.info('stopping daemon.')
|
||||||
linspectord.stop()
|
linspectord.stop()
|
||||||
elif args.restart:
|
elif args.restart:
|
||||||
log.info('[linspector] restarting daemon.')
|
logger.info('restarting daemon.')
|
||||||
linspectord.restart()
|
linspectord.restart()
|
||||||
else:
|
else:
|
||||||
log.info('[linspector] starting daemon.')
|
logger.info('starting daemon.')
|
||||||
linspectord.start()
|
linspectord.start()
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
log.critical('[linspector] daemon error: {0}'.format(err))
|
logger.critical('daemon error: {0}'.format(err))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
signal.pause()
|
signal.pause()
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
log.info('[linspector] program terminated by user!')
|
logger.info('program terminated by user!')
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
|
||||||
|
|
@ -11,9 +11,10 @@ import os
|
||||||
# TODO: check for all required configuration options and set defaults if needed. do this only for
|
# TODO: check for all required configuration options and set defaults if needed. do this only for
|
||||||
# options in the "linspector" section of linspector.ini.
|
# options in the "linspector" section of linspector.ini.
|
||||||
class Configuration:
|
class Configuration:
|
||||||
def __init__(self, configuration_path):
|
def __init__(self, configuration_path, log):
|
||||||
self.__configuration = configparser.ConfigParser()
|
self.__configuration = configparser.ConfigParser()
|
||||||
self.__configuration_path = configuration_path
|
self.__configuration_path = configuration_path
|
||||||
|
self.__log = log
|
||||||
|
|
||||||
# print('[linspector] reading configuration file: ' + configuration_path +
|
# print('[linspector] reading configuration file: ' + configuration_path +
|
||||||
# '/linspector.conf')
|
# '/linspector.conf')
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue