def setup_logging()

in project/nanoeval/nanoeval/library_config.py [0:0]


    def setup_logging(self) -> None:
        # Set up structlog according to https://www.structlog.org/en/stable/standard-library.html
        # Basically, we convert structlogs to logging-style record and then process them using
        # structlog formatters into json for humio, and console for stdout
        structlog.configure(
            processors=[
                # Prepare event dict for `ProcessorFormatter`.
                structlog.stdlib.ProcessorFormatter.wrap_for_formatter,
            ],
            logger_factory=structlog.stdlib.LoggerFactory(),
        )

        # Remove all StreamHandlers from the root logger
        for handler in logging.getLogger().handlers:
            if isinstance(handler, logging.StreamHandler):
                logging.getLogger().removeHandler(handler)

        handler = logging.StreamHandler()
        # Use OUR `ProcessorFormatter` to format all `logging` entries to stdout.
        handler.setFormatter(
            structlog.stdlib.ProcessorFormatter(
                processors=[
                    structlog.stdlib.ProcessorFormatter.remove_processors_meta,
                    structlog.contextvars.merge_contextvars,
                    structlog.processors.add_log_level,
                    structlog.processors.MaybeTimeStamper(fmt="iso"),
                    functools.partial(
                        _remove_all_fields_except,
                        ["timestamp", "level", "event", "component", "exc_info"],
                    ),
                    structlog.dev.ConsoleRenderer(),
                ],
                # logger -> structlog transforms
                foreign_pre_chain=[
                    structlog.stdlib.add_logger_name,
                    partial(_rename_field, "logger", "component"),
                    partial(_rename_field, "logger_name", "component"),
                    partial(_rename_field, "log", "event"),
                    structlog.stdlib.ExtraAdder(),
                ],
            )
        )

        handler.addFilter(PrintOrWarningFilter())
        root_logger = logging.getLogger()
        root_logger.addHandler(handler)
        root_logger.setLevel(logging.INFO)