#!/usr/bin/env python3 import sys import os import logging from config import config """ @var formatting delimiter consisting of '=' characters """ double_line_delim = "=" * 78 """ @var formatting delimiter consisting of '-' characters """ single_line_delim = "-" * 78 def colorize(msg, color): return f"{color}{msg}{COLOR_RESET}" class ColorFormatter(logging.Formatter): def init(self, fmt=None, datefmt=None): super(ColorFormatter, self).__init__(fmt, datefmt) def format(self, record): message = super(ColorFormatter, self).format(record) if hasattr(record, "color"): message = colorize(message, record.color) return message # 40 = ERROR, 30 = WARNING, 20 = INFO, 10 = DEBUG, 0 = NOTSET (all messages) if config.verbose >= 2: log_level = 10 elif config.verbose == 1: log_level = 20 else: log_level = 40 handler = logging.StreamHandler(sys.stdout) color_formatter = ColorFormatter( fmt="%(asctime)s,%(msecs)03d %(message)s", datefmt="%H:%M:%S" ) handler.setFormatter(color_formatter) handler.setLevel(log_level) global_logger = logging.getLogger() global_logger.addHandler(handler) scapy_logger = logging.getLogger("scapy.runtime") scapy_logger.setLevel(logging.ERROR) def get_logger(name): logger = logging.getLogger(name) logger.setLevel(logging.DEBUG) return logger def get_parallel_logger(stream): logger = logging.getLogger("parallel_logger_{!s}".format(stream)) logger.propagate = False logger.setLevel(logging.DEBUG) handler = logging.StreamHandler(stream) handler.setFormatter(color_formatter) handler.setLevel(log_level) logger.addHandler(handler) return logger # Static variables to store color formatting strings. # # These variables (RED, GREEN, YELLOW and LPURPLE) are used to configure # the color of the text to be printed in the terminal. Variable COLOR_RESET # is used to revert the text color to the default one. if hasattr(sys.stdout, "isatty") and sys.stdout.isatty(): RED = "\033[91m" GREEN = "\033[92m" YELLOW = "\033[93m" LPURPLE = "\033[94m" COLOR_RESET = "\033[0m" else: RED = "" GREEN = "" YELLOW = "" LPURPLE = "" COLOR_RESET = ""