Logrotate is definetly the way to go. Since the logs are growing in size you can use logrotate to significantly compress the logs. Assuming your using apache modify the following
vi /etc/logrotate.d/httpd
You'll want it to look something like this:
"/var/log/httpd/site1/*.log" "/var/log/httpd/site2/*.log" {
weekly
rotate 7
compress
missingok
notifempty
sharedscripts
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
endscript
}
- Weekly: Log files are rotated if the current weekday is less then the weekday of the last rotation or if more then a week has passed since the last rotation.
- Rotate 7: Log files are rotated 52 times before being removed or mailed to the address specified in a mail directive. If count is 0, old versions are removed rather then rotated.
- Compress: Old versions of log files are compressed with gzip to save disk space.
- Missingok: If the log file is missing, go on to the next one without issuing an error message.
- Notifempty: Do not rotate the log if it is empty
- Sharedscripts: Normally, prerotate and postrotate scripts are run for each log which is rotated, meaning that a single script may be run multiple times for log file entries which match multiple files. If sharedscript is specified, the scripts are only run once, no matter how many logs match the wildcarded pattern. However, if none of the logs in the pattern require rotating, the scripts will not be run at all.
- Postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
- Endscript: The lines between postrotate and endscript (both of which must appear on lines by themselves) are executed after the log file is rotated. These directives may only appear inside a log file definition.
EDIT: As Lucas Mentioned: Another thing you might want to check out is why your logs are filling up. This can point you to some bad code, or perhaps someone trying to do something malicious, ie via forms etc
If you need more info on the options just use
man logrotate