Skip to content

dagster_rich_formatter

kedro_dagster.logging.dagster_rich_formatter()

Create a rich console formatter for Dagster logging.

This formatter provides human-readable, colorized console output suitable for development and interactive use. It includes timestamps, logger names, log levels, and stack info when available.

Returns

Type Description
ProcessorFormatter

A formatter configured for rich console output with automatic fallback for older structlog versions.

See Also

kedro_dagster.logging.dagster_json_formatter : JSON formatter for log aggregation systems. kedro_dagster.logging.dagster_colored_formatter : Colored formatter using coloredlogs.

Source Code

Show/Hide source
def dagster_rich_formatter() -> structlog.stdlib.ProcessorFormatter:
    """Create a rich console formatter for Dagster logging.

    This formatter provides human-readable, colorized console output suitable
    for development and interactive use. It includes timestamps, logger names,
    log levels, and stack info when available.

    Returns
    -------
    structlog.stdlib.ProcessorFormatter
        A formatter configured for rich console output with automatic
        fallback for older structlog versions.

    See Also
    --------
    `kedro_dagster.logging.dagster_json_formatter` :
        JSON formatter for log aggregation systems.
    `kedro_dagster.logging.dagster_colored_formatter` :
        Colored formatter using coloredlogs.
    """
    foreign_pre_chain = [
        structlog.stdlib.add_logger_name,
        structlog.stdlib.add_log_level,
        structlog.processors.TimeStamper(fmt="iso", utc=True),
        structlog.processors.StackInfoRenderer(),
        structlog.stdlib.ExtraAdder(),
    ]

    processors = [
        structlog.stdlib.ProcessorFormatter.remove_processors_meta,
        structlog.dev.ConsoleRenderer(),
    ]

    try:
        # Try the newer API with processors list
        return structlog.stdlib.ProcessorFormatter(
            foreign_pre_chain=foreign_pre_chain,
            processors=processors,
        )
    except TypeError:
        # Fallback to older API with single processor
        # Chain the processors manually for older versions
        processor = structlog.dev.ConsoleRenderer()
        return structlog.stdlib.ProcessorFormatter(
            foreign_pre_chain=foreign_pre_chain,
            processor=processor,
        )