import logparse
import logparse.config
from logparse.config import prefs, loadconf
-from logparse import formatting, mail, config
-from .parsers import load_parsers
+from logparse import formatting, mail, config, load_parsers
global argparser
# Find parsers
- parser_providers = []
+ loader = load_parsers.ParserLoader("logparse.parsers")
+ parser_names = set([x.name for x in loader.parsers])
+
if argparser.parse_args().logs:
- log_src = argparser.parse_args().logs.split()
+ parser_names = parser_names.intersection(set(argparser.parse_args().logs.split()))
elif config.prefs.get("logparse", "parsers"):
- log_src = config.prefs.get("logparse", "parsers").split()
- else:
- log_src = load_parsers.default_parsers
-
- for parser_name in log_src:
- parser = load_parsers.search(parser_name)
- if parser == None:
- logger.warning("Can't find parser {0}".format(parser_name))
- continue
- else:
- parser_providers.append(load_parsers.load(parser))
+ parser_names = parser_names.intersection(set(config.prefs.get("logparse", "parsers").split()))
if argparser.parse_args().ignore_logs:
- ignore_src = argparser.parse_args().ignore_logs.split()
+ parser_names = parser_names.difference(set(argparser.parse_args().ignore_logs.split()))
elif config.prefs.get("logparse", "ignore-parsers"):
- ignore_src = config.prefs.get("logparse", "ignore-parsers").split()
- else:
- ignore_src = []
- if len(ignore_src) > 0:
- for parser_name in ignore_src:
- if parser_name in [x.__name__.rpartition('.')[2] for x in parser_providers]:
- logger.info("Ignoring default parser {0}".format(parser_name))
- parser_providers_new = []
- for p in parser_providers:
- if p.__name__.rpartition('.')[2] != parser_name:
- parser_providers_new.append(p)
- parser_providers = parser_providers_new
- continue
+ parser_names = parser_names.difference(set(config.prefs.get("logparse", "ignore-parsers").split()))
# Execute parsers
- logger.debug(str(parser_providers))
- for parser in parser_providers:
- output.append_section(parser.parse_log())
+ logger.debug("Queued the following parsers: " + str(loader.parsers))
+ for parser in loader.parsers:
+ if parser.name in parser_names:
+ output.append_section(parser.parse_log())
# Write HTML footer
output.append_footer()