Logrotate — Manage logs easily

Muhammad Ahsan
Stakater
Published in
2 min readDec 29, 2018

What is Log rotation

Log rotation is a process of removing/storing old logs while not affecting the latest/newer logs. Almost every single application generates meaningful logs, and if not properly handled, logs can eat up all the space on your disk. Here comes Logrotate!!

Logrotate helps to administer logs, compress them, remove them or even email them after a certain time period, lets say daily, weekly, monthly etc.

Installation

Most of the linux distributions come with logrotate by default. If that’s not the case it can be installed easily with these commands:

RHEL/CentOS

yum install logrotate

Debian/Ubuntu

apt-get install logrotate

Fedora

dnf install logrotate

How it works?

Logrotate has a configuration file in which we can mention all the files we want to rotate. It needs a time period unit i.e, daily, weekly, monthly etc, and rotate count i.e, 3, 4, 5 for each rotation. Log files are rotated count times before being removed. The default rotate count is 0, which means old version of logs will be removed rather than rotated. So, if your logs are being saved in a file named my-application.log then after a rotation a new file will be created with name my-application.1.log, and so on.

Configuration File

Logrotate configuration file is located in /etc/logrotate.conf. A sample configuration file contains blocks like this

/var/lib/docker/containers/*/*.log {
rotate 5
copytruncate
missingok
notifempty
compress
maxsize 200M
daily
}

Explanation

/var/lib/docker/containers/*/*.log

It represents the path where logrotate will monitor all the files with .log type

rotate 5

Store logs till 5 rotations, which means it will store maximum 5 files of old logs when rotation hits, and will discard oldest logs when there are already 5 files.

copytruncate

Truncate the original log file to zero size in place after creating a copy, instead of moving the old log file and optionally creating a new one. It can be used when some program cannot be told to close its log file and thus might continue writing (appending) to the previous log file forever. Note that there is a very small time slice between copying the file and truncating it, so some logging data might be lost

missingok

If the log file is missing, do not generate an error, and move on the next file.

notifempty

Do not rotate the log if it is empty

compress

Old version of logs are compressed with gzip format.

maxsize 200M

Rotate the log file if it exceeds 200 mb in size, regardless of the rotation time unit.

daily

Rotation should happen daily.

For complete details about logrotate configuration, open the terminal and type in the following command:

man logrotate

--

--

Muhammad Ahsan
Stakater

Full stack developer with major expertise in Java, Spring Boot, React, React Native, Docker, and Kubernetes