Difference between revisions of "Logrotate"

From ArchWiki
Jump to navigation Jump to search
m (I had to google and visit a bunch of sites to be reminded about man page)
(→‎Installation: historical status does not matter)
 
(22 intermediate revisions by 10 users not shown)
Line 1: Line 1:
[[Category:Daemons and system services]]
+
[[Category:Logging]]
 
[[Category:Data compression and archiving]]
 
[[Category:Data compression and archiving]]
 
[[ja:Logrotate]]
 
[[ja:Logrotate]]
Line 7: Line 7:
 
{{Related articles end}}
 
{{Related articles end}}
  
From https://fedorahosted.org/logrotate/:
+
From https://github.com/logrotate/logrotate:
  
:''The logrotate utility is designed to simplify the administration of log files on a system which generates a lot of log files. Logrotate allows for the automatic rotation compression, removal and mailing of log files. Logrotate can be set to handle a log file daily, weekly, monthly or when the log file gets to a certain size.''
+
:The logrotate utility is designed to simplify the administration of log files on a system which generates a lot of log files. Logrotate allows for the automatic rotation compression, removal and mailing of log files. Logrotate can be set to handle a log file daily, weekly, monthly or when the log file gets to a certain size.
  
 
By default, logrotate's ''rotation'' consists of renaming existing log files with a numerical suffix, then recreating the original ''empty'' log file. For example, {{ic|/var/log/syslog.log}} is renamed {{ic|/var/log/syslog.log.1}}. If {{ic|/var/log/syslog.log.1}} already exists from a previous rotation, it is first renamed {{ic|/var/log/syslog.log.2}}. (The number of backlogs to keep can be configured.)
 
By default, logrotate's ''rotation'' consists of renaming existing log files with a numerical suffix, then recreating the original ''empty'' log file. For example, {{ic|/var/log/syslog.log}} is renamed {{ic|/var/log/syslog.log.1}}. If {{ic|/var/log/syslog.log.1}} already exists from a previous rotation, it is first renamed {{ic|/var/log/syslog.log.2}}. (The number of backlogs to keep can be configured.)
Line 15: Line 15:
 
==Installation==
 
==Installation==
  
Logrotate can be installed with the {{Pkg|logrotate}} package. It is installed by default as it is member of the {{Grp|base}} group.
+
Logrotate can be installed with the {{Pkg|logrotate}} package.
  
 
By default, logrotate runs daily using a [[systemd/Timers|systemd timer]]: {{ic|logrotate.timer}}.
 
By default, logrotate runs daily using a [[systemd/Timers|systemd timer]]: {{ic|logrotate.timer}}.
Line 21: Line 21:
 
==Configuration==
 
==Configuration==
  
The primary configuration file for logrotate is {{ic|/etc/logrotate.conf}}; additional configuration files are included from the {{ic|/etc/logrotate.d}} directory.
+
The primary configuration file for logrotate which sets default parameters is {{ic|/etc/logrotate.conf}}; additional application-specific configuration files are included from the {{ic|/etc/logrotate.d}} directory. Values set in application-specific configuration files override those same parameters in the primary configuration file. See {{man|5|logrotate.conf}} for configuration examples and a reference of available directives.
 +
 
 +
To verify if logrotate works correctly, run it in debug mode, in this mode it does nothing except producing debug output:
 +
logrotate --debug /etc/logrotate.conf
 +
 
 +
== Usage ==
 +
 
 +
logrotate is usually run through the [[systemd]] service: {{ic|logrotate.service}}.
 +
 
 +
To run logrotate manually:
 +
logrotate /etc/logrotate.conf
 +
 
 +
To rotate a single log file:
 +
logrotate /etc/logrotate.d/mylog
 +
 
 +
To simulate running your configuration file (''dry run''):
 +
logrotate --debug /etc/logrotate.d/mylog
 +
 
 +
To force running rotations even when conditions are not met, run:
 +
logrotate -vf /etc/logrotate.d/mylog
 +
 
 +
See {{man|8|logrotate}} for more details.
  
 
==Troubleshooting==
 
==Troubleshooting==
Line 32: Line 53:
  
 
To fix this, add the user {{ic|exim}} to the group {{ic|log}}. Then change the group of the {{ic|olddir}}, usually {{ic|/var/log/old}}, to {{ic|log}} instead of the default {{ic|root}}.
 
To fix this, add the user {{ic|exim}} to the group {{ic|log}}. Then change the group of the {{ic|olddir}}, usually {{ic|/var/log/old}}, to {{ic|log}} instead of the default {{ic|root}}.
 +
 +
=== Check logrotate status ===
 +
Logrotate rotations are usually logged to {{ic|/var/lib/logrotate.status}} (the {{ic|-s}} option allows you to specify another state file):
 +
 +
{{hc|/var/lib/logrotate.status|
 +
"/var/log/mysql/query.log" 2016-3-20-5:0:0
 +
"/var/log/samba/samba-smbd.log" 2016-3-21-5:0:0
 +
"/var/log/httpd/access_log" 2016-3-20-5:0:0
 +
...
 +
}}
 +
 +
=== Skipping log because parent directory has insecure permission ===
 +
Set in the config which user and which group has to job {{ic|/etc/logrotate.d/job}} to be run with:
 +
 +
{{bc|
 +
file-to-be-rotated {
 +
    su user group
 +
    rotate 4
 +
}
 +
}}
  
 
== See also ==
 
== See also ==
  
 
* [http://wiki.gentoo.org/wiki/Logrotate Logrotate on Gentoo Linux Wiki]
 
* [http://wiki.gentoo.org/wiki/Logrotate Logrotate on Gentoo Linux Wiki]
* [http://linux.die.net/man/8/logrotate logrotate(8) Manual page]
+
* {{man|8|logrotate}} manual page

Latest revision as of 06:52, 7 October 2019

From https://github.com/logrotate/logrotate:

The logrotate utility is designed to simplify the administration of log files on a system which generates a lot of log files. Logrotate allows for the automatic rotation compression, removal and mailing of log files. Logrotate can be set to handle a log file daily, weekly, monthly or when the log file gets to a certain size.

By default, logrotate's rotation consists of renaming existing log files with a numerical suffix, then recreating the original empty log file. For example, /var/log/syslog.log is renamed /var/log/syslog.log.1. If /var/log/syslog.log.1 already exists from a previous rotation, it is first renamed /var/log/syslog.log.2. (The number of backlogs to keep can be configured.)

Installation

Logrotate can be installed with the logrotate package.

By default, logrotate runs daily using a systemd timer: logrotate.timer.

Configuration

The primary configuration file for logrotate which sets default parameters is /etc/logrotate.conf; additional application-specific configuration files are included from the /etc/logrotate.d directory. Values set in application-specific configuration files override those same parameters in the primary configuration file. See logrotate.conf(5) for configuration examples and a reference of available directives.

To verify if logrotate works correctly, run it in debug mode, in this mode it does nothing except producing debug output:

logrotate --debug /etc/logrotate.conf

Usage

logrotate is usually run through the systemd service: logrotate.service.

To run logrotate manually:

logrotate /etc/logrotate.conf

To rotate a single log file:

logrotate /etc/logrotate.d/mylog

To simulate running your configuration file (dry run):

logrotate --debug /etc/logrotate.d/mylog

To force running rotations even when conditions are not met, run:

logrotate -vf /etc/logrotate.d/mylog

See logrotate(8) for more details.

Troubleshooting

exim log not rotated

If you have set the olddir variable in /etc/logrotate.conf, you will get a message such as:

error: failed to rename /var/log/exim/mainlog to /var/log/old/mainlog.1: Permission denied

To fix this, add the user exim to the group log. Then change the group of the olddir, usually /var/log/old, to log instead of the default root.

Check logrotate status

Logrotate rotations are usually logged to /var/lib/logrotate.status (the -s option allows you to specify another state file):

/var/lib/logrotate.status
"/var/log/mysql/query.log" 2016-3-20-5:0:0
"/var/log/samba/samba-smbd.log" 2016-3-21-5:0:0
"/var/log/httpd/access_log" 2016-3-20-5:0:0
...

Skipping log because parent directory has insecure permission

Set in the config which user and which group has to job /etc/logrotate.d/job to be run with:

file-to-be-rotated {
    su user group
    rotate 4
}

See also