<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
<!-- $LastChangedRevision$ -->

<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<manualpage metafile="rotatelogs.xml.meta">
<parentdocument href="./">Programs</parentdocument>

  <title>rotatelogs - Piped logging program to rotate Apache logs</title>

<summary>
     <p><code>rotatelogs</code> is a simple program for use in
     conjunction with Apache's piped logfile feature.  It supports
     rotation based on a time interval or maximum size of the log.</p>
</summary>

<section id="synopsis"><title>Synopsis</title>

     <p><code><strong>rotatelogs</strong>
     [ -<strong>l</strong> ]
     [ -<strong>L</strong> <var>linkname</var> ]
     [ -<strong>p</strong> <var>program</var> ]
     [ -<strong>f</strong> ]
     [ -<strong>D</strong> ]
     [ -<strong>t</strong> ]
     [ -<strong>v</strong> ]
     [ -<strong>e</strong> ]
     [ -<strong>c</strong> ]
     [ -<strong>n</strong> <var>number-of-files</var> ]
     <var>logfile</var>
     <var>rotationtime</var>|<var>filesize</var>(B|K|M|G)
     [ <var>offset</var> ]</code></p>
</section>

<section id="options"><title>Options</title>

<dl>

<dt><code>-l</code></dt>
<dd>Causes the use of local time rather than GMT as the base for the
interval or for <code>strftime(3)</code> formatting with size-based
rotation.</dd>

<dt><code>-L</code> <var>linkname</var></dt>
<dd><p>Causes a hard link to be made from the current logfile
to the specified link name.  This can be used to watch
the log continuously across rotations using a command like
<code>tail -F linkname</code>.</p>
<p>If the linkname is not an absolute
path, it is relative to <code>rotatelogs</code>' working directory,
which is the <directive module="core">ServerRoot</directive> when
<code>rotatelogs</code> is run by the server.  
</p>
</dd>

<dt><code>-p</code> <var>program</var></dt>

<dd>If given, <code>rotatelogs</code> will execute the specified
program every time a new log file is opened.  The filename of the
newly opened file is passed as the first argument to the program.  If
executing after a rotation, the old log file is passed as the second
argument.  <code>rotatelogs</code> does not wait for the specified
program to terminate before continuing to operate, and will not log
any error code returned on termination.  The spawned program uses the
same stdin, stdout, and stderr as rotatelogs itself, and also inherits
the environment.</dd>

<dt><code>-f</code></dt>
<dd>Causes the logfile to be opened immediately, as soon as
<code>rotatelogs</code> starts, instead of waiting for the
first logfile entry to be read (for non-busy sites, there may be
a substantial delay between when the server is started
and when the first request is handled, meaning that the
associated logfile does not "exist" until then, which
causes problems from some automated logging tools)</dd>

<dt><code>-D</code></dt>
<dd>Creates the parent directories of the path that the log file will be
placed in if they do not already exist.  This allows <code>strftime(3)</code>
formatting to be used in the path and not just the filename.</dd>

<dt><code>-t</code></dt>
<dd>Causes the logfile to be truncated instead of rotated. This is
useful when a log is processed in real time by a command like tail,
and there is no need for archived data. No suffix will be added to
the filename, however format strings containing '%' characters
will be respected.
</dd>

<dt><code>-T</code></dt>
<dd>Causes all but the initial logfile to be truncated when opened.
This is useful when the format string contains something that will
loop around, such as the day of the month. Available in 2.4.56 and later.
</dd>


<dt><code>-v</code></dt>
<dd>Produce verbose output on STDERR. The output contains
the result of the configuration parsing, and all file open and
close actions.</dd>

<dt><code>-e</code></dt>
<dd>Echo logs through to stdout. Useful when logs need to be further
processed in real time by a further tool in the chain.</dd>

<dt><code>-c</code></dt>
<dd>Create log file for each interval, even if empty.</dd>

<dt><code>-n <var>number-of-files</var></code></dt>
<dd>Use a circular list of filenames without timestamps. This option overwrites 
log files at startup and during rotation.  With -n 3, the series of log 
files opened would be "logfile", "logfile.1", "logfile.2", then overwriting 
"logfile". 
<br/>
When this program first opens "logfile", the file will only be truncated if <code>-t</code> is also provided. Every subsequent rotation will
always begin with truncation of the target file.  For size based rotation without <code>-t</code> and existing log files in place,
this option may result in unintuitive behavior such as initial log entries being sent to "logfile.1", and entries in "logfile.1" not being preserved
even if later "logfile.n" have not yet been used.
<br/>
Available in 2.4.5 and later.</dd>

<dt><code><var>logfile</var></code></dt>

<dd><p>The path plus basename of the logfile.  If <var>logfile</var>
includes any '%' characters, it is treated as a format string for
<code>strftime(3)</code>.  Otherwise, the suffix
<var>.nnnnnnnnnn</var> is automatically added and is the time in
seconds (unless the -t option is used). Both formats compute the
start time from the beginning of the current period.  For example,
if a rotation time of 86400 is specified, the hour, minute, and
second fields created from the <code>strftime(3)</code> format will
all be zero, referring to the beginning of the current 24-hour
period (midnight).</p>
<p>When using <code>strftime(3)</code> filename formatting,
be sure the log file format has enough granularity to produce
a different file name each time the logs are rotated.  Otherwise
rotation will overwrite the same file instead of starting a new
one.  For example, if <var>logfile</var> was
<code>/var/log/errorlog.%Y-%m-%d</code> with log rotation at 5
megabytes, but 5 megabytes was reached twice in the same day, the
same log file name would be produced and log rotation would keep
writing to the same file.</p>
<p>If the logfile is not an absolute
path, it is relative to <code>rotatelogs</code>' working directory,
which is the <directive module="core">ServerRoot</directive> when
<code>rotatelogs</code> is run by the server.
</p>
</dd>

<dt><code><var>rotationtime</var></code></dt>

<dd>The time between log file rotations in seconds.  The rotation
occurs at the beginning of this interval.  For example, if the
rotation time is 3600, the log file will be rotated at the beginning
of every hour; if the rotation time is 86400, the log file will be
rotated every night at midnight.  (If no data is logged during an
interval, no file will be created.)</dd>

<dt><code><var>filesize</var>(B|K|M|G)</code></dt>

<dd>The maximum file size in followed by exactly one of the letters
<code>B</code> (Bytes), <code>K</code> (KBytes), <code>M</code> (MBytes)
or <code>G</code> (GBytes).
<p>
When time and size are specified, the size must be given after the time.
Rotation will occur whenever either time or size limits are reached.
</p>
</dd>

<dt><code><var>offset</var></code></dt>

<dd>The number of minutes offset from UTC.  If omitted, zero is
assumed and UTC is used.  For example, to use local time in the zone
UTC -5 hours, specify a value of <code>-300</code> for this argument.
In most cases, <code>-l</code> should be used instead of specifying
an offset.</dd>

</dl>
</section>

<section id="examples"><title>Examples</title>

<example>
<highlight language="config">
     CustomLog "|bin/rotatelogs /var/log/logfile 86400" common
</highlight>
</example>

     <p>This creates the files /var/log/logfile.nnnn where nnnn  is
     the system time at which the log nominally starts (this time
     will always be a multiple of the rotation time, so  you  can
     synchronize cron scripts with it).  At the end of each rotation
     time (here after 24 hours) a new log is started.</p>

<example>
<highlight language="config">
     CustomLog "|bin/rotatelogs -l /var/log/logfile.%Y.%m.%d 86400" common
</highlight>
</example>

     <p>This creates the files /var/log/logfile.yyyy.mm.dd where
     yyyy is the year, mm is the month, and dd is the day of the month.
     Logging will switch to a new file every day at midnight, local time.</p>

<example>
<highlight language="config">
     CustomLog "|bin/rotatelogs /var/log/logfile 5M" common
</highlight>
</example>

     <p>This configuration will rotate the logfile whenever it reaches
     a size of 5 megabytes.</p>

<example>
<highlight language="config">
     ErrorLog "|bin/rotatelogs /var/log/errorlog.%Y-%m-%d-%H_%M_%S 5M"
</highlight>
</example>
     <p>This configuration will rotate the error logfile whenever it
     reaches a size of 5 megabytes, and the suffix to the logfile name
     will be created of the form
     <code>errorlog.YYYY-mm-dd-HH_MM_SS</code>.</p>

<example>
<highlight language="config">
     CustomLog "|bin/rotatelogs -t /var/log/logfile 86400" common
</highlight>
</example>

     <p>This creates the file <code>/var/log/logfile</code>, truncating the file at
     startup and then truncating the file once per day. It is expected
     in this scenario that a separate process (such as tail) would
     process the file in real time.</p>

<example>
<highlight language="config">
     CustomLog "|bin/rotatelogs -T /var/log/logfile.%d 86400" common
</highlight>
</example>

<p>If the server is started (or restarted) on the first of the month, this 
appends to <code>/var/log/logfile.01</code>.  When a log entry is written on the
second of the month, <code>/var/log/logfile.02</code> is truncated and new entries
will be added to the top. This example keeps approximately 1 months worth of 
logs without external maintenance.</p>

</section>

<section id="portability"><title>Portability</title>

<p>The following logfile format string substitutions should be
supported by all <code>strftime(3)</code> implementations, see
the <code>strftime(3)</code> man page for library-specific
extensions.</p>

<table border="1" style="zebra">
<tr><td><code>%A</code></td><td>full weekday name (localized)</td></tr>
<tr><td><code>%a</code></td><td>3-character weekday name (localized)</td></tr>
<tr><td><code>%B</code></td><td>full month name (localized)</td></tr>
<tr><td><code>%b</code></td><td>3-character month name (localized)</td></tr>
<tr><td><code>%c</code></td><td>date and time (localized)</td></tr>
<tr><td><code>%d</code></td><td>2-digit day of month</td></tr>
<tr><td><code>%H</code></td><td>2-digit hour (24 hour clock)</td></tr>
<tr><td><code>%I</code></td><td>2-digit hour (12 hour clock)</td></tr>
<tr><td><code>%j</code></td><td>3-digit day of year</td></tr>
<tr><td><code>%M</code></td><td>2-digit minute</td></tr>
<tr><td><code>%m</code></td><td>2-digit month</td></tr>
<tr><td><code>%p</code></td><td>am/pm of 12 hour clock (localized)</td></tr>
<tr><td><code>%S</code></td><td>2-digit second</td></tr>
<tr><td><code>%U</code></td><td>2-digit week of year
(Sunday first day of week)</td></tr>
<tr><td><code>%W</code></td><td>2-digit week of year
(Monday first day of week)</td></tr>
<tr><td><code>%w</code></td><td>1-digit weekday
(Sunday first day of week)</td></tr>
<tr><td><code>%X</code></td><td>time (localized)</td></tr>
<tr><td><code>%x</code></td><td>date (localized)</td></tr>
<tr><td><code>%Y</code></td><td>4-digit year</td></tr>
<tr><td><code>%y</code></td><td>2-digit year</td></tr>
<tr><td><code>%Z</code></td><td>time zone name</td></tr>
<tr><td><code>%%</code></td><td>literal `%'</td></tr>
</table>

</section>
</manualpage>
