Added file logging and a new parameter (-s) for logging to stdout.

This commit is contained in:
Johannes Findeisen 2022-09-29 02:59:40 +02:00
commit dbb0e23091
5 changed files with 66 additions and 18 deletions

View file

@ -22,19 +22,20 @@ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""
import argparse
import logging
import logging.handlers
import os
import sys
from logging import getLogger
from linspector.core.configuration import Configuration
from linspector.core.environment import Environment
from linspector.core.linspector import Linspector
from linspector.core.monitors import Monitors
__version__ = '0.18'
__version__ = '0.18.1'
__author__ = 'Johannes Findeisen <you@hanez.org>'
logger = getLogger('linspector')
logger = logging.getLogger('linspector')
def parse_args():
@ -57,6 +58,9 @@ def parse_args():
parser.add_argument('-r', '--restart', default=False, dest='restart', action='store_true',
help='restart the daemon if it is running(default: false)')
parser.add_argument('-s', '--stdout', default=False, dest='stdout', action='store_true',
help='log to stdout')
parser.add_argument('-v', '--version', action='version', version='%(prog)s ' + str(__version__))
return parser.parse_args()
@ -64,7 +68,6 @@ def parse_args():
def main():
args = parse_args()
environment = Environment()
monitors = None
notifications = {}
@ -72,13 +75,50 @@ def main():
services = {}
tasks = {}
if args.stdout:
# setting pre initialization default log level to INFO. this changes after initialization
# of the configuration. maybe there are better solutions...?
logger.setLevel(logging.INFO)
stdout_formatter = logging.Formatter('[%(asctime)s] [%(levelname)s] %(message)s')
stdout_handler = logging.StreamHandler(sys.stdout)
stdout_handler.setFormatter(stdout_formatter)
logger.addHandler(stdout_handler)
try:
configuration = Configuration(args.configuration_path, environment)
#configuration.dump_to_ini()
except Exception as err:
logger.error('[linspector] configuration error: {0}'.format(err))
logger.critical('[linspector] configuration error: {0}'.format(err))
sys.exit(1)
if configuration.get_option('linspector', 'log_file'):
log_file = os.path.expanduser(configuration.get_option('linspector', 'log_file'))
if not os.path.exists(os.path.dirname(log_file)):
os.makedirs(os.path.dirname(log_file))
log_file_formatter = logging.Formatter('%(asctime)s:%(levelname)s:%(name)s:%(message)s')
log_file_handler = logging.handlers.RotatingFileHandler(log_file,
maxBytes=int(
configuration.get_option(
'linspector', 'log_size')),
backupCount=int(
configuration.get_option(
'linspector', 'log_count')))
log_file_handler.setFormatter(log_file_formatter)
logger.addHandler(log_file_handler)
# critical errors will always show up even when no log_level is set. this is most silent.
logger.setLevel(logging.CRITICAL)
log_level = configuration.get_option('linspector', 'log_level')
if log_level == "error":
logger.setLevel(logging.ERROR)
elif log_level == "warning":
logger.setLevel(logging.WARNING)
elif log_level == "info":
logger.setLevel(logging.INFO)
elif log_level == "debug":
logger.setLevel(logging.DEBUG)
try:
monitors = Monitors(configuration, environment, notifications, services, tasks)
except Exception as err:
@ -87,7 +127,7 @@ def main():
try:
linspector = Linspector(configuration, environment, monitors, plugins)
except Exception as err:
logger.error('[linspector] core initialization error: {0}'.format(err))
logger.critical('[linspector] core initialization error: {0}'.format(err))
sys.exit(1)
# daemon initialization
@ -103,7 +143,7 @@ def main():
else:
linspectord.start()
except Exception as err:
logger.error('[linspector] daemon initialization error: {0}'.format(err))
logger.critical('[linspector] daemon error: {0}'.format(err))
sys.exit(1)