Log rotation with rsyslog¶
Written by Michael Meckelein
Situation¶
Your environment does not allow you to store tons of logs? You have limited disc space available for logging, for example you want to log to a 124 MB RAM usb stick? Or you do not want to keep all the logs for months, logs from the last days is sufficient? Think about log rotation.
Log rotation based on a fixed log size¶
This small but hopefully useful article will show you the way to keep your logs at a given size. The following sample is based on rsyslog illustrating a simple but effective log rotation with a maximum size condition.
Use Rainerscript rotation parameters for fixed-length syslog files¶
Lets assume you do not want to spend more than 100 MB hard disc space
for you logs. With rsyslog you can configure the
rotation.sizeLimit
and rotation.sizeLimitCommand
parameters of
the omfile action to achieve
this. The Rainerscript fragment below writes all messages to a file and
rotates it once the size limit is exceeded.
action(
type="omfile"
file="/var/log/log_rotation.log"
rotation.sizeLimit="52428800" # 50 MiB per file
rotation.sizeLimitCommand="/home/me/log_rotation_script"
template="RSYSLOG_TraditionalFileFormat"
)
When the configured limit is reached, rsyslog executes the command
specified in rotation.sizeLimitCommand
. In our case it runs
/home/me/log_rotation_script
which contains a single command:
mv -f /var/log/log_rotation.log /var/log/log_rotation.log.1
This moves the original log to a kind of backup log file. After the
action was successfully performed rsyslog creates a new
/var/log/log_rotation.log
file and fills it with new logs. So the
latest logs are always in log_rotation.log
. The two rotation
parameters are documented in
rotation.sizeLimit and
rotation.sizeLimitCommand.
Note
Older examples use the $outchannel
directive. That syntax maps to
the same rotation parameters shown above but is kept solely for
backward compatibility. New configurations should always use
Rainerscript objects and attributes.
Conclusion¶
With this approach two files for logging are used, each with a maximum size of 50 MB. So we can say we have successfully configured a log rotation which satisfies our requirement. We keep the logs at a fixed-size level of 100 MB.
Support: rsyslog Assistant | GitHub Discussions | GitHub Issues: rsyslog source project
Contributing: Source & docs: rsyslog source project
© 2008–2025 Rainer Gerhards and others. Licensed under the Apache License 2.0.