Apache typically uses logrotate to manage log files, creating compressed archives like error.log.2.gz when rotating. These files accumulate over time and can consume significant disk space.
Yes, it's completely safe to delete rotated log files (error.log.1 through error.log.11.gz) as long as:
- You're not currently troubleshooting issues that might require historical logs
- Apache isn't writing to these files (they're rotated/compressed copies)
To quickly remove old logs while keeping recent ones:
sudo find /var/log/apache2/ -name "error.log.*.gz" -mtime +30 -delete
This deletes gzipped error logs older than 30 days.
Using logrotate Configuration
Edit /etc/logrotate.d/apache2:
/var/log/apache2/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
/etc/init.d/apache2 reload > /dev/null
endscript
}
Key parameters:
rotate 7- keeps only 7 rotated logscompress- enables gzip compression
Cron-based Cleanup
Add this to your crontab (crontab -e):
0 3 * * * find /var/log/apache2/ -name "error.log.*" -mtime +14 -exec rm {} \;
Runs daily at 3 AM, removing error logs older than 14 days.
This script maintains 10GB of logs maximum:
#!/bin/bash
LOG_DIR="/var/log/apache2"
MAX_SIZE=10240 # 10GB in MB
current_size=$(du -sm "$LOG_DIR" | cut -f1)
while [ "$current_size" -gt "$MAX_SIZE" ]; do
oldest_file=$(find "$LOG_DIR" -name "error.log.*" -printf '%T+ %p\n' | sort | head -n 1 | awk '{print $2}')
[ -z "$oldest_file" ] && break
rm -f "$oldest_file"
current_size=$(du -sm "$LOG_DIR" | cut -f1)
done
- Always test deletion commands with
-lsbefore-delete - Consider archiving important logs before deletion
- Monitor disk space after implementing changes
Yes, you can safely delete rotated Apache error logs (error.log.1 through error.log.11.gz). These are historical logs that have been rotated by logrotate or Apache's built-in rotation mechanism. The current active log file (error.log) should never be deleted while Apache is running.
Apache typically uses one of these log rotation methods:
- Built-in rotation (when using CustomLog/ErrorLog directives with rotation parameters)
- System's logrotate utility (common in Debian/Ubuntu systems)
For immediate space recovery, run:
# Delete all rotated error logs older than current sudo find /var/log/apache2 -name "error.log.*" -delete # Alternative with compression check sudo find /var/log/apache2 -name "error.log.[0-9]*" -o -name "error.log.[0-9]*.gz" -delete
Edit your Apache logrotate configuration (typically at /etc/logrotate.d/apache2):
/var/log/apache2/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
/etc/init.d/apache2 reload > /dev/null
endscript
}
Key parameters to modify:
rotate 7- keeps 7 rotated logs (reduce this number)compress- enables gzip compressiondaily- rotation frequency
For systems without logrotate:
# Add to crontab (crontab -e) 0 2 * * * find /var/log/apache2 -name "error.log.*" -mtime +30 -delete
After configuration:
# Test logrotate configuration sudo logrotate -d /etc/logrotate.d/apache2 # Force immediate rotation sudo logrotate -vf /etc/logrotate.d/apache2
Set up monitoring to prevent future issues:
# Simple disk space check script
#!/bin/bash
THRESHOLD=90
CURRENT=$(df /var/log | awk '{print $5}' | tail -1 | sed 's/%//')
if [ "$CURRENT" -gt "$THRESHOLD" ]; then
echo "Cleaning Apache logs..."
find /var/log/apache2 -name "*.gz" -mtime +7 -delete
fi