How to use the command 'logrotate' (with examples)
- Linux
- December 17, 2024
Logrotate is a system utility that manages the automatic rotation and compression of log files. As systems and applications run, they generate logs that can grow over time, consuming disk space and becoming harder to manage. Logrotate addresses this by organizing log files - it rotates, compresses, and can even send log reports via email. This ensures that logging doesn’t overrun available storage and that old logs can be archived for future reference or audited purposes. Here we’ll explore different use cases of the logrotate command.
Use case 1: Trigger a run manually
Code:
logrotate path/to/logrotate.conf --force
Motivation:
In certain scenarios, you might need to immediately rotate logs outside of the regular schedule. This could be due to unexpectedly large log files causing storage issues or to implement a new configuration without delay.
Explanation:
logrotate
: This is the main utility command.path/to/logrotate.conf
: Specifies the configuration file that contains rules and policies for how logs should be handled.--force
: Instructs logrotate to process all log files as specified in the configuration file, regardless of whether they are actually due for rotation or not.
Example output:
Rotating logs using configuration from path/to/logrotate.conf
Forcing log rotation: logs are processed even if usually not needed.
Use case 2: Run using a specific command to mail reports
Code:
logrotate path/to/logrotate.conf --mail /usr/bin/mail_command
Motivation:
Some administrators may need to receive reports whenever logrotate processes log files. This option allows for sending these reports via email using a specified mail command, ensuring stakeholders are informed about log rotation activities.
Explanation:
logrotate
: The main utility for rotating logs.path/to/logrotate.conf
: Points to the configuration file for logrotate’s operation.--mail /usr/bin/mail_command
: Specifies the path to the mailing command or script to be used for sending log reports.
Example output:
Logs rotated. Sending email report using /usr/bin/mail_command.
Email successfully sent to user@example.com.
Use case 3: Run without using a state (lock) file
Code:
logrotate path/to/logrotate.conf --state /dev/null
Motivation:
The state file is used by logrotate to keep track of when each log file was last processed. However, there are occasions where you may want logrotate to run without referring to this history, such as for testing purposes or one-off maintenance tasks.
Explanation:
logrotate
: The log management utility.path/to/logrotate.conf
: The path to the configuration file.--state /dev/null
: Directs logrotate to not use a state file, by sending state data to/dev/null
, this means no state changes are saved after execution.
Example output:
Ignoring previous run states, processing all log files fresh without state file.
Logs processed: completion without state persistence.
Use case 4: Run and skip the state (lock) file check
Code:
logrotate path/to/logrotate.conf --skip-state-lock
Motivation:
Skipping the state lock can be beneficial in scenarios where multiple runs are needed in quick succession, or where locks cannot be applied due to system restrictions, to avoid conflict and ensure log operations are completed.
Explanation:
logrotate
: The core command to manage system log files.path/to/logrotate.conf
: Indicates which configuration to follow.--skip-state-lock
: Tells logrotate to bypass checking or creating a lock file, allowing immediate execution without waiting for potential conflicts.
Example output:
Bypassing state lock: Executing log rotation unimpeded.
Log processing completed without locking constraints.
Use case 5: Tell logrotate
to log verbose output into the log file
Code:
logrotate path/to/logrotate.conf --log path/to/log_file
Motivation:
Having a detailed record of logrotate’s actions can be invaluable for troubleshooting or auditing purposes. By directing verbose output to a specified file, administrators can gain insights into the log rotation process.
Explanation:
logrotate
: The command to execute log file management.path/to/logrotate.conf
: Configuration specifying how logs should be rotated.--log path/to/log_file
: Directs verbose logging output to the specified log file, capturing detailed information about logrotate operations.
Example output:
Writing verbose output to path/to/log_file.
Logrotate execution details: started, processed, completed.
Conclusion:
Logrotate is a versatile tool for managing system and application logs. By using different command options, administrators can fine-tune log management strategies to suit specific needs. From forcing immediate log rotations to sending detailed outputs and reports, these use cases demonstrate how logrotate can be tailored for robust log management, ensuring operations continue smoothly while keeping disk usage in check.