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)
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")
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()
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()