bugfixing & add smbd_journald
[logparse.git] / logparse / load_parsers.py
index f752fb47cb9dd56d2e3e7e40e81f25fa44d48f75..9520583a3e517702639d9ff0a054ad4590f83819 100644 (file)
@@ -37,7 +37,7 @@ class Parser():
     logparse.formatting.Section object.
     """
 
-    def __init__(self, name=None, path=None, info=None, deprecated=False):
+    def __init__(self, name=None, path=None, info=None, deprecated=False, successor=""):
         """
         The following variables can be set to display information about the
         parser. The object `self.logger` can be used as for outputting messages
@@ -49,6 +49,7 @@ class Parser():
         self.info = dict(info) if info else None
         self.logger = logging.getLogger(__name__)
         self.deprecated = deprecated
+        self.successor = successor
 
     def load(self):
         """
@@ -115,7 +116,7 @@ class ParserLoader:
             parser_module = spec.loader.load_module(spec.name)
             return self._validate_module(parser_module)
         except Exception as e:
-            logger.debug("Couldn't find parser {0} in {1}: {2}".format(pattern, self.path, str(e)))
+            logger.debug("Couldn't find parser {0} in {1}".format(pattern, self.path))
             return None
 
     def _search_default(self, pattern):
@@ -157,6 +158,9 @@ class ParserLoader:
             if None in get_type_hints(c):
                 logger.warning("Parser class {0} in {1} contains a null-returning parse_log() method".format(c.__class__.__name__, c.__file__))
                 continue
+            parser_obj = c()
+            if parser_obj.deprecated:
+                logger.warning("Parser {0} is deprecated - use {1} instead".format(parser_obj.name, parser_obj.successor))
             logger.debug("Found parser {0}.{1}".format(c.__module__, c.__class__.__name__))
             available_parsers.append(c())