def add_logger_splunkhandler(
        logger=set_default_logger(), log_filter=None, **kwargs):
    """
    Handler for writing logs to Splunk index.
    :param logger: logging instance
    :param log_filter: logging Filter object
    :param kwargs: Splunk configuration options
    :return: logger with Splunk Handler attached
    """
    try:
        from splunk_hec_handler import SplunkHecHandler
        import urllib3
        urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
    except Exception as err:
        logger.warning("Failed to add Splunk log handler. Error: %s" % err)
        return logger
    else:
        try:
            host = kwargs.pop('host')
            token = kwargs.pop('token')
            level = kwargs.get('level', 'INFO')
            sh = SplunkHecHandler(host, token, **kwargs)
            sh.set_name("{}_splunk".format(logger.name))
        except Exception as err:
            logger.warning("Failed to add Splunk log handler.  Error: %s" %
                           err)
            raise err
        else:
            sh.setLevel(level)
            if log_filter is not None:
                sh.addFilter(log_filter)
            logger.addHandler(sh)
    return logger
Beispiel #2
0
def add_logger_splunkhandler(logger=set_default_logger(), **kwargs):
    """
    Handler for writing logs to Splunk index.
    https://github.com/vavarachen/splunk_hec_handler
    :param logger: logging instance
    :param kwargs: Splunk configuration options
    :return: logger with Splunk Handler attached
    """
    try:
        from splunk_hec_handler import SplunkHecHandler
        import urllib3
        urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
    except Exception as err:
        logger.warning("Failed to add Splunk log handler. Error: %s" % err)
        return logger
    else:
        try:
            host = kwargs.pop('host')
            token = kwargs.pop('token')
            level = kwargs.pop('level') if 'level' in kwargs.keys() else 'INFO'
            sh = SplunkHecHandler(host, token, **kwargs)
        except Exception as err:
            logger.warning("Failed to add Splunk log handler.  Error: %s" %
                           err)
            raise err
        else:
            sh.setLevel(level)
            logger.addHandler(sh)
    return logger
Beispiel #3
0
def add_splunk_handler(args):
    """
    Add remote Splunk HEC logging handler to logger
    :param args:  argparse Namespace containing values to configure Splunk handler.  Host and Token required.
    :return: None.  Adds splunk log handler to logger.
    """
    if not args.splunk:
        return
    try:
        # Third-Party Libraries
        from splunk_hec_handler import SplunkHecHandler
    except ModuleNotFoundError as err:
        logger.warning(
            "Filed to import 'splunk_hec_handler' python module.  Try 'pip install splunk_hec_handler'"
        )

    except Exception as err:
        logger.warning(
            "Error encountered adding Splunk logging handler.  Error: %s" %
            err)

    else:
        if not args.verify:
            try:
                # Third-Party Libraries
                import urllib3

                urllib3.disable_warnings(
                    urllib3.exceptions.InsecureRequestWarning)
            except ModuleNotFoundError as err:
                logger.debug("Failed to suppress SSL warnings")

        logger.debug(
            "Configuring Splunk handler: host: %s, port: %d, proto: %s, ssl_verify: %s, token: %s, source: %s, sourcetype: %s"
            % (
                args.host,
                args.port,
                args.proto,
                args.verify,
                args.token,
                args.source,
                args.sourcetype,
            ))

        splunk_handler = SplunkHecHandler(
            args.host,
            args.token,
            index=args.index,
            port=args.port,
            proto=args.proto,
            ssl_verify=args.verify,
            source=args.source,
            sourcetype=args.sourcetype,
        )
        splunk_handler.setLevel(logging.getLevelName(args.loglevel))
        logger.addHandler(splunk_handler)