logrotate - rotates, compresses, and mails system logs


SYNOPSIS

       logrotate   [-dv]   [-f|--force]  [-s|--state  file]  con­
       fig_file+


DESCRIPTION

       logrotate is designed to ease  administration  of  systems
       that generate large numbers of log files.  It allows auto­
       matic rotation, compression, removal, and mailing  of  log
       files.   Each  log  file  may  be  handled  daily, weekly,
       monthly, or when it grows too large.

       Normally, logrotate is run as a daily cron job.   It  will
       not modify a log multiple times in one day unless the cri­
       terium for that log is based on the log's size and  logro­
       tate  is  being run multiple times each day, or unless the
       -f or -force option is used.

       Any number of config files may be  given  on  the  command
       line. Later config files may override the options given in
       earlier files, so the order in which the logrotate  config
       files are listed in is important.  Normally, a single con­
       fig file which includes any other config files  which  are
       needed  should be used.  See below for more information on
       how to use the include directive to accomplish this.  If a
       directory is given on the command line, every file in that
       directory is used as a config file.

       If no command line arguments  are  given,  logrotate  will
       print  version  and  copyright  information,  along with a
       short usage summary.  If any errors occur  while  rotating
       logs, logrotate will exit with non-zero status.


OPTIONS

       -d     Turns on debug mode and implies -v.  In debug mode,
              no changes will be made  to  the  logs  or  to  the
              logrotate state file.

       -f, --force
              Tells  logrotate  to force the rotation, even if it
              doesn't think this is necessary.  Sometimes this is
              useful after adding new entries to logrotate, or if
              old log files have been removed by hand, as the new
              files  will  be  created, and logging will continue
              correctly.

       -s, --state <statefile>
              Tells logrotate to use  an  alternate  state  file.
              This  is  useful  if  logrotate  is  being run as a

              default state file is /var/lib/logrotate.status.

       --usage
              Prints a short usage message.


CONFIGURATION FILE

       logrotate  reads  everything about the log files it should
       be handling from the series of configuration files  speci­
       fied on the command line.  Each configuration file can set
       global options (local definitions  override  global  ones,
       and later definitions override earlier ones) and specify a
       logfile to rotate. A simple configuration file looks  like
       this:

       # sample logrotate configuration file
       compress

       /var/log/messages {
           rotate 5
           weekly
           postrotate
                                     /sbin/killall -HUP syslogd
           endscript
       }

       "/var/log/httpd/access.log" /var/log/httpd/error.log {
           rotate 5
           mail www@my.org
           size=100k
           sharedscripts
           postrotate
                                     /sbin/killall -HUP httpd
           endscript
       }

       /var/log/news/* {
           monthly
           rotate 2
           missingok
           postrotate
                                     kill -HUP `cat /var/run/inn.pid`
           endscript
           nocompress
       }

       The  first  few  lines set global options; in the example,
       logs are compressed after they  are  rotated.   Note  that
       comments may appear anywhere in the config file as long as
       the first non-whitespace character on the line is a #.

       The next section of the config files defined how to handle

       five weekly rotations before being removed. After the  log
       file  has  been rotated (but before the old version of the
       log has been compressed), the command  /sbin/killall  -HUP
       syslogd will be executed.

       The   next   section   defines  the  parameters  for  both
       /var/log/httpd/access.logand     /var/log/httpd/error.log.
       They  are rotated whenever is grows over 100k is size, and
       the old logs files are mailed (uncompressed) to www@my.org
       after   going  through  5  rotations,  rather  then  being
       removed.  The  sharedscripts  means  that  the  postrotate
       script  will only be run once, not once for each log which
       is rotated. Note that the double quotes around  the  first
       filename at the beginning of this section allows logrotate
       to rotate logs with spaces in the name. Normal shell quot­
       ing rules apply, with ', ", and \ characters supported.

       The  last  section  definest the parameters for all of the
       files in /var/log/news. Each file is rotated on a  monthly
       basis.  This is considered a single rotation directive and
       if errors occur for more then one file, the log files  are
       not compressed.

       Here  is  more  information on the directives which may be
       included in a logrotate configuration file:

       compress
              Old versions of log files are compressed with  gzip
              by default. See also nocompress.

       compresscmd
              Specifies  which  command  to  use  to compress log
              files.  The default is gzip.  See also compress.

       uncompresscmd
              Specifies which command to use  to  uncompress  log
              files.  The default is gunzip.

       compressext
              Specifies which extension to use on compressed log­
              files, if compression is enabled.  The default fol­
              lows that of the configured compression command.

       compressoptions
              Command  line options may be passed to the compres­
              sion program, if one is in use.  The  default,  for
              gzip, is "-9" (maximum compression).

              Truncate  the original log file in place after cre­
              ating a copy, instead of moving the  old  log  file
              and  optionally  creating a new one, It can be used
              when some program can not 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.   When this option is used, the create option
              will have no effect, as the old log file  stays  in
              place.

       create mode owner group
              Immediately  after  rotation (before the postrotate
              script is run) the log file is  created  (with  the
              same  name  as  the  log  file just rotated).  mode
              specifies the mode for the log file in  octal  (the
              same  as  chmod(2)),  owner specifies the user name
              who will own the log file, and group specifies  the
              group  the  log file will belong to. Any of the log
              file attributes may be omitted, in which case those
              attributes  for the new file will use the same val­
              ues as  the  original  log  file  for  the  omitted
              attributes.  This  option can be disabled using the
              nocreate option.

       daily  Log files are rotated every day.

       delaycompress
              Postpone compression of the previous  log  file  to
              the next rotation cycle.  This has only effect when
              used in combination with compress.  It can be  used
              when some program can not be told to close its log­
              file and thus might continue writing to the  previ­
              ous log file for some time.

       extension ext
              Log  files  are given the final extension ext after
              rotation. If compression is used,  the  compression
              extension (normally .gz) appears after ext.

       ifempty
              Rotate  the log file even if it is empty, overiding
              the notifempty option (ifempty is the default).

       include file_or_directory
              Reads the file given as an argument as  if  it  was

              appears. If a directory is given, most of the files
              in that directory are read before processing of the
              including file continues. The only files which  are
              ignored are files which are not regular files (such
              as directories and named  pipes)  and  files  whose
              names  end  with  one  of  the taboo extensions, as
              specified by the tabooext directive.   The  include
              directive may not appear inside of a log file defi­
              nition.

       mail address
              When a  log  is  rotated  out-of-existence,  it  is
              mailed  to  address. If no mail should be generated
              by a particular log, the nomail  directive  may  be
              used.

       mailfirst
              When  using the mail command, mail the just-rotated
              file, instead of the about-to-expire file.

       maillast
              When using the mail  command,  mail  the  about-to-
              expire file, instead of the just-rotated file (this
              is the default).

       missingok
              If the log file is missing, go on to the  next  one
              without   issuing   an   error  message.  See  also
              nomissingok.

       monthly
              Log files are rotated the first time  logrotate  is
              run  in  a month (this is normally on the first day
              of the month).

       nocompress
              Old versions of log files are not  compressed  with
              gzip. See also compress.

       nocopytruncate
              Do  not  truncate  the  original  log file in place
              after creating a copy (this overrides the copytrun­
              cate option).

              New  log  files are not created (this overrides the
              create option).

       nodelaycompress
              Do not postpone compression  of  the  previous  log
              file to the next rotation cycle (this overrides the
              delaycompress option).

       nomail Don't mail old log files to any address.

       nomissingok
              If a log file does not exist, issue an error.  This
              is the default.

       noolddir
              Logs are rotated in the same directory the log nor­
              mally  resides  in  (this  overrides   the   olddir
              option).

       nosharedscripts
              Run  prerotate  and  postrotate  scripts  for every
              script which is rotated (this is the  default,  and
              overrides the sharedscripts option).

       notifempty
              Do  not  rotate  the log if it is empty (this over­
              rides the ifempty option).

       olddir directory
              Logs are moved into  directory  for  rotation.  The
              directory  must  be  on the same physical device as
              the log file being rotated.  When  this  option  is
              used  all  old versions of the log end up in direc­
              tory.  This option may be overriden by the noolddir
              option.

       postrotate/endscript
              The lines between postrotate and endscript (both of
              which must appear on lines by themselves) are  exe­
              cuted  after  the log file is rotated. These direc­
              tives may only appear inside of a log file  defini­
              tion.  See prerotate as well.

              The  lines between prerotate and endscript (both of
              which must appear on lines by themselves) are  exe­
              cuted  before the log file is rotated. These direc­
              tives may only appear inside of a log file  defini­
              tion.  See postrotate as well.

       rotate count
              Log  files  are  rotated <count> times before being
              removed or mailed to the  address  specified  in  a
              mail  directive.  If  count  is 0, old versions are
              removed rather then rotated.

       size size
              Log files are rotated when they  grow  bigger  then
              size  bytes.  If size is followed by M, the size if
              assumed to be in megabytes.  If the k is used,  the
              size  is  in kilobytes. So size 100, size 100k, and
              size 100M are all valid.

       sharedscripts
              Normally, prescript and postscript scripts are  run
              for  each log which is rotated, meaning that a sin­
              gle script may be run multiple times for  log  file
              entries  which  match  multiple  files (such as the
              /var/log/news/* example). If sharedscript is speci­
              fied,  the scripts are only run once, no matter how
              many logs match the  wildcarded  pattern.   A  side
              effect  of  this  option  is  that  the scripts are
              always executed, even if no logs are rotated (if it
              is  not specified, the scripts are run only if logs
              are actually rotated) (this overrides the noshared­
              scripts option).

       tabooext [+] list
              The  current  taboo  extension list is changed (see
              the include directive for information on the  taboo
              extensions).  If  a  +  precedes the list of exten­
              sions, the current taboo  extension  list  is  aug­
              mented,  otherwise  it is replaced. At startup, the
              taboo extension list contains  .rpmorig,  .rpmsave,
              ,v, .swp, .rpmnew, and ~.

       weekly Log  files  are  rotated  if the current weekday is
              less then the weekday of the last  rotation  or  if
              more  then  a  week has passed since the last rota­
              tion. This is normally the same as rotating logs on
              the  first  day of the week, but it works better if
              logrotate is not run every night.

       /var/lib/logrotate.status  Default state file.
       /etc/logrotate.conf        Configuration options.


SEE ALSO

       gzip(1)


AUTHORS

       Erik Troan <ewt@redhat.com>
       Preston Brown <pbrown@redhat.com>


Man(1) output converted with man2html