"""Logging configuration for zeek-client."""

import logging

LOG = logging.getLogger(__name__)
LOG.addHandler(logging.NullHandler())


def configure(verbosity=0, rich_logging=False, stream=None):
    """Configures logging.

    Args:
        verbosity (int): the log level. Values 0-3 increase logging, larger
            values make no difference.

        rich_logging (bool): whether to use timestamped, log-style log formatting.
    """
    # Make log levels lower-case, looks better in informal logging
    for level in (logging.ERROR, logging.WARNING, logging.INFO, logging.DEBUG):
        logging.addLevelName(level, logging.getLevelName(level).lower())

    if rich_logging:
        formatter = logging.Formatter(
            "%(asctime)s %(levelname)-8s %(message)s",
            "%Y-%m-%d %H:%M:%S",
        )
    else:
        formatter = logging.Formatter("%(levelname)s: %(message)s")

    handler = logging.StreamHandler(stream=stream)
    handler.setFormatter(formatter)

    LOG.setLevel(logging.ERROR)

    if verbosity == 1:
        LOG.setLevel(logging.WARNING)
    elif verbosity == 2:
        LOG.setLevel(logging.INFO)
    elif verbosity >= 3:
        LOG.setLevel(logging.DEBUG)

    LOG.addHandler(handler)
