diff --git a/pwnagotchi/log.py b/pwnagotchi/log.py index a2adb9ae..1fa9bfd4 100644 --- a/pwnagotchi/log.py +++ b/pwnagotchi/log.py @@ -2,15 +2,11 @@ import hashlib import time import re import os -import sys import logging -import logging.handlers -import syslog import shutil import gzip import warnings from datetime import datetime -from dateutil import parser as date_parser from pwnagotchi.voice import Voice from pwnagotchi.mesh.peer import Peer @@ -34,7 +30,6 @@ class LastSession(object): self.config = config self.voice = Voice(lang=config['main']['lang']) self.path = config['main']['log']['path'] - self.log_type = config['main']['log']['type'].lower() self.last_session = [] self.last_session_id = '' self.last_saved_session_id = '' @@ -69,19 +64,10 @@ class LastSession(object): self.last_saved_session_id = self.last_session_id def _parse_datetime(self, dt): - try: - return time.mktime(date_parser.parse(dt)) - except ValueError as ve: - logging.debug("%s: %s %s" % (dt,ve, sys.exc_info())) - dt = dt.split('.')[0] - dt = dt.split(',')[0] - try: - dt = datetime.strptime(dt.split('.')[0], '%Y-%m-%d %H:%M:%S') - return time.mktime(dt.timetuple()) - except Exception as e: - # not a date - logging.debug("%s: %s" % (sys.exc_info(), e)) - return time.time() + dt = dt.split('.')[0] + dt = dt.split(',')[0] + dt = datetime.strptime(dt.split('.')[0], '%Y-%m-%d %H:%M:%S') + return time.mktime(dt.timetuple()) def _parse_stats(self): self.duration = '' @@ -105,6 +91,7 @@ class LastSession(object): parts = line.split(']') if len(parts) < 2: continue + try: line_timestamp = parts[0].strip('[') line = ']'.join(parts[1:]) @@ -186,8 +173,6 @@ class LastSession(object): def parse(self, ui, skip=False): if skip: logging.debug("skipping parsing of the last session logs ...") - elif self.log_type in ['syslog', 'console']: - logging.info("skipping last session stats with %s logging" % self.log_type) else: logging.debug("reading last session logs ...") @@ -235,56 +220,43 @@ def setup_logging(args, config): filenameDebug = cfg['path-debug'] #global formatter - formatter = logging.Formatter(cfg.get("format", "[%(asctime)s] [%(levelname)s] [%(threadName)s] : %(message)s")) - print("Format: %s" % cfg.get("format","")) - formatter = logging.Formatter("[%(asctime)s] [%(levelname)s] [%(threadName)s] : %(message)s") - logger = logging.getLogger() - - dbg = args.debug or cfg.get('debug', False) for handler in logger.handlers: - handler.setLevel(logging.DEBUG if dbg else logging.INFO) + handler.setLevel(logging.DEBUG if args.debug else logging.INFO) handler.setFormatter(formatter) + + + logger.setLevel(logging.DEBUG if args.debug else logging.INFO) + + if filename: + # since python default log rotation might break session data in different files, + # we need to do log rotation ourselves + log_rotation(filename, cfg) + log_rotation(filenameDebug, cfg) - logger.setLevel(logging.DEBUG if dbg else logging.INFO) - log_type = cfg.get("type", "files").strip().lower() # files, syslog or console - - if log_type == "syslog": - syslog_handler = logging.handlers.SysLogHandler(address='/dev/log', facility=syslog.LOG_USER) - syslog_handler.setLevel(logging.DEBUG if dbg else logging.INFO) - syslog_handler.setFormatter(formatter) - logger.addHandler(syslog_handler) - - elif log_type == "console": - # Console handler for logging debug messages if args.debug is true else just log normal - console_handler = logging.StreamHandler() #creates new - console_handler.setLevel(logging.DEBUG if dbg else logging.INFO) - console_handler.setFormatter(formatter) - logger.addHandler(console_handler) - - else: # default is using file and debug file - if filename: - # since python default log rotation might break session data in different files, - # we need to do log rotation ourselves - log_rotation(filename, cfg) - # File handler for logging all normal messages - file_handler = logging.FileHandler(filename) #creates new - file_handler.setLevel(logging.INFO) - file_handler.setFormatter(formatter) - logger.addHandler(file_handler) - - if filenameDebug: - log_rotation(filenameDebug, cfg) - # File handler for logging all debug messages - file_handler = logging.FileHandler(filenameDebug) #creates new - file_handler.setLevel(logging.DEBUG) - file_handler.setFormatter(formatter) - logger.addHandler(file_handler) - if not dbg: + # File handler for logging all normal messages + file_handler = logging.FileHandler(filename) #creates new + file_handler.setLevel(logging.INFO) + file_handler.setFormatter(formatter) + logger.addHandler(file_handler) + + # File handler for logging all debug messages + file_handler = logging.FileHandler(filenameDebug) #creates new + file_handler.setLevel(logging.DEBUG) + file_handler.setFormatter(formatter) + logger.addHandler(file_handler) + + # Console handler for logging debug messages if args.debug is true else just log normal + #console_handler = logging.StreamHandler() #creates new + #console_handler.setLevel(logging.DEBUG if args.debug else logging.INFO) + #console_handler.setFormatter(formatter) + #logger.addHandler(console_handler) + + if not args.debug: # disable scapy and tensorflow logging logging.getLogger("scapy").disabled = True # https://stackoverflow.com/questions/15777951/how-to-suppress-pandas-future-warning