fix bugs in interface & module loading
[logparse.git] / logparse / interface.py
index 5913b6baacc9107b501f6f561a2f89efa186f1bb..d93ca92f7debda4ec904e73b33eb3beeb1ed8739 100644 (file)
@@ -13,19 +13,19 @@ import sys
 from datetime import datetime
 
 import logparse
-from . import config
-from logparse import formatting, mail
+from .config import *
+from logparse import formatting, mail, config
 from .parsers import load_parsers, sudo, sshd, cron, httpd, smbd, postfix, zfs, temperature
 
 def rotate():   
     # rotate logs using systemd logrotate
     if parser.parse_args().function is None:
-        if (config.prefs['rotate'] == 'y'):
+        if (prefs['rotate'] == 'y'):
             subprocess.call("/usr/sbin/logrotate -f /etc/logrotate.conf", shell=True)
             logger.info("rotated logfiles")
         else:
             logger.debug("user doesn't want to rotate logs")
-            if (config.prefs['rotate'] == 's'):
+            if (prefs['rotate'] == 's'):
                 logger.debug("Here is the output of `logrotate -d /etc/logrotate.conf` (simulated):")
                 sim = subprocess.check_output("/usr/sbin/logrotate -d /etc/logrotate.conf", shell=True)
                 logger.debug(sim)
@@ -45,12 +45,19 @@ def main():
     parser.add_argument('-nr', '--no-rotate', help='do not rotate logfiles (overrides logparse.conf)', required=False, default=False, action='store_true')
     parser.add_argument('-l', '--logs', help='services to analyse', required=False)
 
+    # Load config
+    if parser.parse_args().config:
+        config.prefs = config.loadconf(parser.parse_args().config, parser)
+    else:
+        config.prefs = config.loadconf(argparser=parser)
+    prefs = config.prefs
+    
     # Set up logging
     logger = logging.getLogger(__name__)
     loghandler = logging.handlers.SysLogHandler(address = '/dev/log')
     loghandler.setFormatter(logging.Formatter(fmt='logparse.py[' + str(os.getpid()) + ']: %(message)s'))
     loghandler.setLevel(logging.WARNING)   # don't spam syslog with debug messages
-    if parser.parse_args().verbose:
+    if parser.parse_args().verbose or (config.prefs['verbose'] == 'y' or config.prefs['verbose'] == 'yes'):
         print("Verbose mode is on")
         logging.basicConfig(level=logging.DEBUG)
         logger.debug("Verbose mode turned on")
@@ -58,27 +65,22 @@ def main():
         logging.basicConfig(level=logging.INFO)
     logger.addHandler(loghandler)
 
-    # Load config
-    if parser.parse_args().config or config.prefs['verbose']:
-        config.prefs = config.loadconf(parser.parse_args().config, parser)
-    else:
-        config.prefs = config.loadconf(argparser=parser)
     logger.debug("Finished loading config")
 
     # Time analysis
     global start
     start = datetime.now()
     logger.info("Beginning log analysis at {0} {1}".format(start.strftime(formatting.DATEFMT), start.strftime(formatting.TIMEFMT)))
-    logger.debug("This is {0} version {1}, running on Python {2}".format(logparse.__name__, logparse.__version__, sys.version))
+    logger.debug("This is {0} version {1}, running on Python {2}".format(logparse.__name__, logparse.__version__, sys.version.replace('\n', '')))
      
 #    for l in parser.parse_args().logs.split(' '):
 #        eval(l)
 #        sys.exit()
 
-#    print(load_parsers.search());
+    print(load_parsers.search());
     # Write HTML document
     global output_html
-    output_html = formatting.header(config.prefs['header'])
+    output_html = formatting.header(prefs['header'])
     output_html += sudo.parse_log()
     output_html += sshd.parse_log()
     output_html += cron.parse_log()
@@ -106,7 +108,7 @@ def main():
                 logger.warning("No output written")
 
     if parser.parse_args().to:
-       mail.sendmail(mailbin=config.prefs['mail']['mailbin'], body=output_html, recipient=parser.parse_args().to, subject="logparse test")
+       mail.sendmail(mailbin=prefs['mail']['mailbin'], body=output_html, recipient=parser.parse_args().to, subject="logparse test")
     
     # Print end message
     finish = datetime.now()