Ejemplo n.º 1
0
def test_url_parts():
    server, port = get_url_parts("localhost:3000")
    assert server == "localhost"
    assert port == 3000

    server, port = get_url_parts("localhost")
    assert server == "localhost"
    assert port is None

    server, port = get_url_parts("127.0.0.1")
    assert server == "127.0.0.1"
    assert port is None
Ejemplo n.º 2
0
def get_logger_for_server(hostname, protocol, output_format):
    """Gets the logger that sends logs to a server for the given format.

    Args:
        hostname: The hostname of the server. It may include the port.
        protocol: The transfer protocol for sending logs.
        output_format: CEF, JSON, or RAW_JSON. Each type results in a different logger instance.
    """
    logger = logging.getLogger("code42_syslog_{}".format(
        output_format.lower()))
    if logger_has_handlers(logger):
        return logger

    with logger_deps_lock:
        if not logger_has_handlers(logger):
            url_parts = get_url_parts(hostname)
            port = url_parts[1] or 514
            try:
                handler = NoPrioritySysLogHandlerWrapper(
                    url_parts[0], port=port, protocol=protocol).handler
            except Exception as e:
                raise Exception(
                    "Unable to connect {}. Failed with error {}".format(
                        hostname, str(e)))
            return _init_logger(logger, handler, output_format)
    return logger
Ejemplo n.º 3
0
def get_logger_for_server(hostname, protocol, output_format, certs):
    """Gets the logger that sends logs to a server for the given format.

    Args:
        hostname: The hostname of the server. It may include the port.
        protocol: The transfer protocol for sending logs.
        output_format: CEF, JSON, or RAW_JSON. Each type results in a different logger instance.
        certs: Use for passing SSL/TLS certificates when connecting to the server.
    """
    logger = logging.getLogger(f"code42_syslog_{output_format.lower()}")
    if logger_has_handlers(logger):
        return logger

    with logger_deps_lock:
        url_parts = get_url_parts(hostname)
        hostname = url_parts[0]
        port = url_parts[1] or 514
        if not logger_has_handlers(logger):
            handler = NoPrioritySysLogHandler(hostname, port, protocol, certs)
            handler.connect_socket()
            return _init_logger(logger, handler, output_format)
    return logger