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.

info

✨ This is on LiteLLM Enterprise

Enterprise Pricing

Get free 7-day trial key

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