Writing logs to Redis

Airflow can be configured to store log lines in Redis up to a configured maximum log lines, always keeping the most recent, up to a configured TTL. This deviates from other existing task handlers in that it accepts a connection ID. This allows it to be used in addition to other handlers, and so allows a graceful/reversible transition from one logging system to another. This is particularly useful in situations that use Redis as a message broker, where additional infrastructure isn’t desired.

Configuring logging

To enable this feature, airflow.cfg must be configured as in this example:

[logging]
remote_logging = True
remote_log_conn_id = redis_default

[redis]
# Optional configurations
# max_lines = 10000
# ttl_seconds = 2419200

Airflow uses the Redis Connection to connect to the Redis cluster. If you have a connection with ID redis_default properly set up, Airflow will use it to read and write logs.

Key template

Logs are stored in Redis using keys generated with a template. The default template is dag_id={dag_id}/run_id={run_id}/task_id={task_id}/attempt={try_number}.log. Each key holds a Redis List containing the log lines.

Was this entry helpful?