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
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