How to Use Logrotate to Manage Logs on Ubuntu


logrotate

Logrotate is a tool used by the system administrators to ease the management of large log files generated by the system services. The most important features of logrotate are automatic log rotation, log compression, log removal and mailing the log files. In this tutorial, we are going to show you how to use logrotate to manage the log files generated by the services running on your Linux VPS.

Before we start, make sure that logrotate is installed on your server. Connect to your server via SSH and check if logrotate is installed by using the following command:

sudo dpkg -l | grep logrotate

If it is not installed on your Ubuntu VPS, we will help you to install it. First, resynchronize the package index and upgrade all packages currently installed on the system to the newest version using the commands below:

sudo apt-get update
sudo apt-get upgrade

Once the package manager completes the upgrade, go ahead and install logrotate:

sudo apt-get install logrotate

Verify that the installation was successful:

sudo logrotate

You should get a message like the following:

logrotate 3.8.7 - Copyright (C) 1995-2001 Red Hat, Inc.
This may be freely redistributed under the terms of the GNU Public License

Usage: logrotate [-dfv?] [-d|--debug] [-f|--force] [-m|--mail=command] [-s|--state=statefile] [-v|--verbose] [--version] [-?|--help] [--usage] [OPTION...] 

The main configuration file for logrotate is /etc/logrotate.conf while application specific configuration files are stored in the /etc/logrotate.d directory.

Depending on what services are installed on your Ubuntu VPS, the /etc/logrotate.d directory may contain more or less configuration files. If you haven’t checked already, now is time to list the content of that directory and get familiar with the services for which logrotate is configured to work. As an example, we will use the /etc/logrotate.d/dpkg file to show you some of the most important configuration options. Open the file using a text editor:

sudo nano /etc/logrotate.d/dpkg

The content of the configuration file should be similar to the one below:

/var/log/dpkg.log {
        monthly
        rotate 12
        compress
        delaycompress
        missingok
        notifempty
        create 644 root root
}
/var/log/alternatives.log {
        monthly
        rotate 12
        compress
        delaycompress
        missingok
        notifempty
        create 644 root root
}

Logrotate checks /var/log/dpkg.log and /var/log/alternatives.log on a monthly basis. The rotation time is specified with the monthly option. Other rotation options are daily, hourly, weekly and yearly.

rotate tells how many times the log files should be rotated before being removed or mailed to a specific address. In this example, the log files will be rotated 12 times. In a case when rotate is set to 0, old log files are removed rather than rotated.

The next option is compress which specifies that the old version of the log files should be compressed. Alternative option is nocompress and in can be used in cases when the old versions of the log files should not be compressed.

delaycompress specifies that the compression of the previous log file should be postponed to the next rotation cycle.

missingok and notifempty are used to skip the rotation without issuing an error message if the log file is missing and to skip the rotation if the log file is empty.

create 644 root root is used to create a log file immediately after the rotation using specific mode, owner and group.

Another option which is not mentioned in this example and you may find useful in your custom configurations is size. This option allows you to configure logrotate to rotate the log files only if they get bigger than a specific size. The size can be specified in bytes, kilobytes, megabytes and gigabytes. Therefore, size 100, size 100k, size 100M and size 100G are all valid.

For more datails and configuration options you can check the logrotate man page.

man logrotate

By default, logrotate is run as a daily cron job. For details about the cron job you can check /etc/cron.daily/logrotate. You can freely set up the cron job for logrotate to run hourly, weekly, yearly or at a specific time and/or day.

Of course, you don’t have to do any of this if you use one of our Linux VPS Hosting services, in which case you can simply ask our expert Linux admins to configure logrotate for you. They are available 24×7 and will take care of your request immediately.

PS. If you liked this post please share it with your friends on the social networks using the buttons on the left or simply leave a reply below. Thanks.

Tutorials
Install GlassFish on a CentOS 6 VPS
Tutorials
Install and Configure PureFTPd with MySQL on an OpenSUSE Linux VPS
Tutorials
How to Install Drupal 7 on CentOS 7 with Nginx, MariaDB and PHP-FPM
There are currently no comments.