Skip to main content

Maximum Retention Period for Spend Logs

This walks through how to set the maximum retention period for spend logs. This helps manage database size by deleting old logs automatically.

Requirements​

  • Postgres (for log storage)
  • Redis (optional) — required only if you're running multiple proxy instances and want to enable distributed locking

Usage​

Setup​

Add this to your proxy_config.yaml under general_settings:

proxy_config.yaml
general_settings:
maximum_spend_logs_retention_period: "7d" # Keep logs for 7 days

# Optional: set how frequently cleanup should run - default is daily
maximum_spend_logs_retention_interval: "1d" # Run cleanup daily

litellm_settings:
cache: true
cache_params:
type: redis

Configuration Options​

maximum_spend_logs_retention_period (required)​

How long logs should be kept before deletion. Supported formats:

  • "7d" – 7 days
  • "24h" – 24 hours
  • "60m" – 60 minutes
  • "3600s" – 3600 seconds

maximum_spend_logs_retention_interval (optional)​

How often the cleanup job should run. Uses the same format as above. If not set, cleanup will run every 24 hours if and only if maximum_spend_logs_retention_period is set.

How it works​

Step 1. Lock Acquisition (Optional with Redis)​

If Redis is enabled, LiteLLM uses it to make sure only one instance runs the cleanup at a time.

  • If the lock is acquired:
    • This instance proceeds with cleanup
    • Others skip it
  • If no lock is present:
    • Cleanup still runs (useful for single-node setups)

Working of spend log deletions
Working of spend log deletions

Step 2. Batch Deletion​

Once cleanup starts:

  • It calculates the cutoff date using the configured retention period
  • Deletes logs older than the cutoff in batches of 1000
  • Adds a short delay between batches to avoid overloading the database

Default settings:​

  • Batch size: 1000 logs
  • Max batches per run: 500
  • Max deletions per run: 500,000 logs

You can change the number of batches using an environment variable:

SPEND_LOG_RUN_LOOPS=200

This would allow up to 200,000 logs to be deleted in one run.

Batch deletion of old logs
Batch deletion of old logs