Q. How do I rotate log files under Linux operating system?
A. You need use tool called logrotate, which is designed to ease administration of systems that generate large numbers of log files. It allows automatic rotation, compression, removal, and mailing of log files.
Each log file may be handled daily, weekly, monthly, or when it grows too large. With this tool you keep logs longer with less disk space.
Default configuration file
The default configuration file is /etc/logrotate.conf:
# see "man logrotate" for detailsService or server specific configurations stored in /etc/logrotate.d directory, for example here is sample apache logrotate configuration file:
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
rotate 1
}# cat /etc/logrotate.d/httpdOutput:
/var/log/httpd/*.log {
weekly
rotate 52
compress
missingok
notifempty
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true endscript
}Where,
- 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 52 : 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
/bin/kill -HUP `cat /var/run/httpd.pid 2>/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.
See complete working example: How to rotating logs with logrotate for Lighttpd web server.
- 30 Handy Bash Shell Aliases For Linux / Unix / Mac OS X
- Top 30 Nmap Command Examples For Sys/Network Admins
- 25 PHP Security Best Practices For Sys Admins
- 20 Linux System Monitoring Tools Every SysAdmin Should Know
- 20 Linux Server Hardening Security Tips
- Linux: 20 Iptables Examples For New SysAdmins
- Top 20 OpenSSH Server Best Security Practices
- Top 20 Nginx WebServer Best Security Practices
- 20 Examples: Make Sure Unix / Linux Configuration Files Are Free From Syntax Errors
- 15 Greatest Open Source Terminal Applications Of 2012

- My 10 UNIX Command Line Mistakes
- Top 10 Open Source Web-Based Project Management Software
- Top 5 Email Client For Linux, Mac OS X, and Windows Users
- The Novice Guide To Buying A Linux Laptop












{ 12 comments… read them below or add one }
Am getting this problem very biggly
Please help me out
vi /etc/logrotate.conf
# see “man logrotate” for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp — we’ll rotate them here
/var/log/wtmp {
monthly
minsize 1M
create 0664 root utmp
rotate 1
}
cat /etc/logrotate.d/httpd
/var/log/httpd/*log {
missingok
notifempty
sharedscripts
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
endscript
}
My server is running nearly 10 sites and all those creating log files under statistics in vhosts.
it wil become more than 30 gb with in week. how to control it. please reply me
@Ela
Its always a good idea to rotate logs according to size instead of age when the logs are too big or too small. Rotating logs according to age favours for moderate logs only.
Have you tried to install and run BleachBit?
Try rotatelogs feature of httpd.conf :-)
http://httpd.apache.org/docs/2.0/programs/rotatelogs.html
sharedscripts postrotate do_something endscriptfirstaction do_something endscriptsorry! Change
to
To rotate the httpd logs.
/var/log/httpd/*log {
missingok
noolddir
nomail
copytruncate
notifempty
rotate 1
size 1M
}
Where do you write this code?
Create a new file under logrotate.d directory:
/etc/logrotate.d/httpd
Dear friends,
how can use this tool? it is downloadable tool??
i need it but i can not find any thing, is it a feature in linux of a tool which can download it?
would you please help me,
it’s very helpful to me ,
please
Logrotate tool by default is included in the OS package itself, no need to download.
Hi all,
Can u please send me a configuration script to logrotate for below requirement
Log rotate and compression
Create archive of data older than 45 days and share it to rajcse09@gmail.com and delete It from existing log dir
Thanks and Regards,
Raju