rotatelogs.html.en revision 7990d642c3b336fcb8aa9c177fd74531227c562f
95881853170c1ca02b650717fd416a2c2a5e3568nd<?xml version="1.0" encoding="ISO-8859-1"?>
95881853170c1ca02b650717fd416a2c2a5e3568nd<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
95881853170c1ca02b650717fd416a2c2a5e3568nd<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><!--
15b0d99a66145e797cbe368bff5e44d5653be5e5nd XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
95881853170c1ca02b650717fd416a2c2a5e3568nd This file is generated from xml source: DO NOT EDIT
95881853170c1ca02b650717fd416a2c2a5e3568nd XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
db878466c5e95073429dda0bdd001f45e9486e16fielding -->
db878466c5e95073429dda0bdd001f45e9486e16fielding<title>rotatelogs - Piped logging program to rotate Apache logs - Apache HTTP Server Version 2.5</title>
db878466c5e95073429dda0bdd001f45e9486e16fielding<link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
db878466c5e95073429dda0bdd001f45e9486e16fielding<link href="/style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
db878466c5e95073429dda0bdd001f45e9486e16fielding<link href="/style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="/style/css/prettify.css" />
db878466c5e95073429dda0bdd001f45e9486e16fielding<script src="/style/scripts/prettify.min.js" type="text/javascript">
95881853170c1ca02b650717fd416a2c2a5e3568nd</script>
95881853170c1ca02b650717fd416a2c2a5e3568nd
95881853170c1ca02b650717fd416a2c2a5e3568nd<link href="/images/favicon.ico" rel="shortcut icon" /></head>
95881853170c1ca02b650717fd416a2c2a5e3568nd<body id="manual-page"><div id="page-header">
95881853170c1ca02b650717fd416a2c2a5e3568nd<p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="/glossary.html">Glossary</a> | <a href="/sitemap.html">Sitemap</a></p>
95881853170c1ca02b650717fd416a2c2a5e3568nd<p class="apache">Apache HTTP Server Version 2.5</p>
95881853170c1ca02b650717fd416a2c2a5e3568nd<img alt="" src="/images/feather.gif" /></div>
95881853170c1ca02b650717fd416a2c2a5e3568nd<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="/images/left.gif" /></a></div>
95881853170c1ca02b650717fd416a2c2a5e3568nd<div id="path">
95881853170c1ca02b650717fd416a2c2a5e3568nd<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.5</a> &gt; <a href="./">Programs</a></div><div id="page-content"><div id="preamble"><h1>rotatelogs - Piped logging program to rotate Apache logs</h1>
95881853170c1ca02b650717fd416a2c2a5e3568nd<div class="toplang">
95881853170c1ca02b650717fd416a2c2a5e3568nd<p><span>Available Languages: </span><a href="/en/programs/rotatelogs.html" title="English">&nbsp;en&nbsp;</a> |
95881853170c1ca02b650717fd416a2c2a5e3568nd<a href="/ko/programs/rotatelogs.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
95881853170c1ca02b650717fd416a2c2a5e3568nd<a href="/tr/programs/rotatelogs.html" hreflang="tr" rel="alternate" title="T�rk�e">&nbsp;tr&nbsp;</a></p>
95881853170c1ca02b650717fd416a2c2a5e3568nd</div>
95881853170c1ca02b650717fd416a2c2a5e3568nd
95881853170c1ca02b650717fd416a2c2a5e3568nd <p><code>rotatelogs</code> is a simple program for use in
95881853170c1ca02b650717fd416a2c2a5e3568nd conjunction with Apache's piped logfile feature. It supports
95881853170c1ca02b650717fd416a2c2a5e3568nd rotation based on a time interval or maximum size of the log.</p>
95881853170c1ca02b650717fd416a2c2a5e3568nd</div>
95881853170c1ca02b650717fd416a2c2a5e3568nd<div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#synopsis">Synopsis</a></li>
95881853170c1ca02b650717fd416a2c2a5e3568nd<li><img alt="" src="/images/down.gif" /> <a href="#options">Options</a></li>
95881853170c1ca02b650717fd416a2c2a5e3568nd<li><img alt="" src="/images/down.gif" /> <a href="#examples">Examples</a></li>
95881853170c1ca02b650717fd416a2c2a5e3568nd<li><img alt="" src="/images/down.gif" /> <a href="#portability">Portability</a></li>
95881853170c1ca02b650717fd416a2c2a5e3568nd</ul><ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div>
95881853170c1ca02b650717fd416a2c2a5e3568nd<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
95881853170c1ca02b650717fd416a2c2a5e3568nd<div class="section">
95881853170c1ca02b650717fd416a2c2a5e3568nd<h2><a name="synopsis" id="synopsis">Synopsis</a></h2>
95881853170c1ca02b650717fd416a2c2a5e3568nd
95881853170c1ca02b650717fd416a2c2a5e3568nd <p><code><strong>rotatelogs</strong>
95881853170c1ca02b650717fd416a2c2a5e3568nd [ -<strong>l</strong> ]
95881853170c1ca02b650717fd416a2c2a5e3568nd [ -<strong>L</strong> <var>linkname</var> ]
95881853170c1ca02b650717fd416a2c2a5e3568nd [ -<strong>p</strong> <var>program</var> ]
95881853170c1ca02b650717fd416a2c2a5e3568nd [ -<strong>f</strong> ]
95881853170c1ca02b650717fd416a2c2a5e3568nd [ -<strong>d</strong> ]
95881853170c1ca02b650717fd416a2c2a5e3568nd [ -<strong>v</strong> ]
95881853170c1ca02b650717fd416a2c2a5e3568nd [ -<strong>e</strong> ]
95881853170c1ca02b650717fd416a2c2a5e3568nd [ -<strong>c</strong> ]
95881853170c1ca02b650717fd416a2c2a5e3568nd [ -<strong>n</strong> <var>number-of-files</var> ]
95881853170c1ca02b650717fd416a2c2a5e3568nd <var>logfile</var>
95881853170c1ca02b650717fd416a2c2a5e3568nd <var>rotationtime</var>|<var>filesize</var>(B|K|M|G)
95881853170c1ca02b650717fd416a2c2a5e3568nd [ <var>offset</var> ]</code></p>
95881853170c1ca02b650717fd416a2c2a5e3568nd</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
95881853170c1ca02b650717fd416a2c2a5e3568nd<div class="section">
95881853170c1ca02b650717fd416a2c2a5e3568nd<h2><a name="options" id="options">Options</a></h2>
95881853170c1ca02b650717fd416a2c2a5e3568nd
95881853170c1ca02b650717fd416a2c2a5e3568nd<dl>
95881853170c1ca02b650717fd416a2c2a5e3568nd
95881853170c1ca02b650717fd416a2c2a5e3568nd<dt><code>-l</code></dt>
95881853170c1ca02b650717fd416a2c2a5e3568nd<dd>Causes the use of local time rather than GMT as the base for the
95881853170c1ca02b650717fd416a2c2a5e3568ndinterval or for <code>strftime(3)</code> formatting with size-based
95881853170c1ca02b650717fd416a2c2a5e3568ndrotation.</dd>
95881853170c1ca02b650717fd416a2c2a5e3568nd
95881853170c1ca02b650717fd416a2c2a5e3568nd<dt><code>-L</code> <var>linkname</var></dt>
95881853170c1ca02b650717fd416a2c2a5e3568nd<dd>Causes a hard link to be made from the current logfile
95881853170c1ca02b650717fd416a2c2a5e3568ndto the specified link name. This can be used to watch
95881853170c1ca02b650717fd416a2c2a5e3568ndthe log continuously across rotations using a command like
95881853170c1ca02b650717fd416a2c2a5e3568nd<code>tail -F linkname</code>.</dd>
95881853170c1ca02b650717fd416a2c2a5e3568nd
95881853170c1ca02b650717fd416a2c2a5e3568nd<dt><code>-p</code> <var>program</var></dt>
95881853170c1ca02b650717fd416a2c2a5e3568nd
95881853170c1ca02b650717fd416a2c2a5e3568nd<dd>If given, <code>rotatelogs</code> will execute the specified
95881853170c1ca02b650717fd416a2c2a5e3568ndprogram every time a new log file is opened. The filename of the
95881853170c1ca02b650717fd416a2c2a5e3568ndnewly opened file is passed as the first argument to the program. If
95881853170c1ca02b650717fd416a2c2a5e3568ndexecuting after a rotation, the old log file is passed as the second
95881853170c1ca02b650717fd416a2c2a5e3568ndargument. <code>rotatelogs</code> does not wait for the specified
95881853170c1ca02b650717fd416a2c2a5e3568ndprogram to terminate before continuing to operate, and will not log
95881853170c1ca02b650717fd416a2c2a5e3568ndany error code returned on termination. The spawned program uses the
95881853170c1ca02b650717fd416a2c2a5e3568ndsame stdin, stdout, and stderr as rotatelogs itself, and also inherits
95881853170c1ca02b650717fd416a2c2a5e3568ndthe environment.</dd>
95881853170c1ca02b650717fd416a2c2a5e3568nd
95881853170c1ca02b650717fd416a2c2a5e3568nd<dt><code>-f</code></dt>
95881853170c1ca02b650717fd416a2c2a5e3568nd<dd>Causes the logfile to be opened immediately, as soon as
95881853170c1ca02b650717fd416a2c2a5e3568nd<code>rotatelogs</code> starts, instead of waiting for the
95881853170c1ca02b650717fd416a2c2a5e3568ndfirst logfile entry to be read (for non-busy sites, there may be
95881853170c1ca02b650717fd416a2c2a5e3568nda substantial delay between when the server is started
95881853170c1ca02b650717fd416a2c2a5e3568ndand when the first request is handled, meaning that the
95881853170c1ca02b650717fd416a2c2a5e3568ndassociated logfile does not "exist" until then, which
95881853170c1ca02b650717fd416a2c2a5e3568ndcauses problems from some automated logging tools)</dd>
95881853170c1ca02b650717fd416a2c2a5e3568nd
95881853170c1ca02b650717fd416a2c2a5e3568nd<dt><code>-d</code></dt>
f37877a589391f0c8cf7fe41933039cb199f8896nd<dd>Creates the parent directories of the path that the log file will be
95881853170c1ca02b650717fd416a2c2a5e3568ndplaced in if they do not already exist. This allows <code>strftime(3)</code>
95881853170c1ca02b650717fd416a2c2a5e3568ndformatting to be used in the path and not just the filename.</dd>
95881853170c1ca02b650717fd416a2c2a5e3568nd
95881853170c1ca02b650717fd416a2c2a5e3568nd<dt><code>-t</code></dt>
95881853170c1ca02b650717fd416a2c2a5e3568nd<dd>Causes the logfile to be truncated instead of rotated. This is
95881853170c1ca02b650717fd416a2c2a5e3568nduseful when a log is processed in real time by a command like tail,
95881853170c1ca02b650717fd416a2c2a5e3568ndand there is no need for archived data. No suffix will be added to
95881853170c1ca02b650717fd416a2c2a5e3568ndthe filename, however format strings containing '%' characters
95881853170c1ca02b650717fd416a2c2a5e3568ndwill be respected.
95881853170c1ca02b650717fd416a2c2a5e3568nd</dd>
95881853170c1ca02b650717fd416a2c2a5e3568nd
95881853170c1ca02b650717fd416a2c2a5e3568nd<dt><code>-v</code></dt>
95881853170c1ca02b650717fd416a2c2a5e3568nd<dd>Produce verbose output on STDERR. The output contains
95881853170c1ca02b650717fd416a2c2a5e3568ndthe result of the configuration parsing, and all file open and
95881853170c1ca02b650717fd416a2c2a5e3568ndclose actions.</dd>
95881853170c1ca02b650717fd416a2c2a5e3568nd
95881853170c1ca02b650717fd416a2c2a5e3568nd<dt><code>-e</code></dt>
95881853170c1ca02b650717fd416a2c2a5e3568nd<dd>Echo logs through to stdout. Useful when logs need to be further
95881853170c1ca02b650717fd416a2c2a5e3568ndprocessed in real time by a further tool in the chain.</dd>
95881853170c1ca02b650717fd416a2c2a5e3568nd
95881853170c1ca02b650717fd416a2c2a5e3568nd<dt><code>-c</code></dt>
95881853170c1ca02b650717fd416a2c2a5e3568nd<dd>Create log file for each interval, even if empty.</dd>
95881853170c1ca02b650717fd416a2c2a5e3568nd
95881853170c1ca02b650717fd416a2c2a5e3568nd<dt><code>-n <var>number-of-files</var></code></dt>
95881853170c1ca02b650717fd416a2c2a5e3568nd<dd>Use a circular list of filenames without timestamps.
95881853170c1ca02b650717fd416a2c2a5e3568ndWith -n 3, the series of log files opened would be
95881853170c1ca02b650717fd416a2c2a5e3568nd"logfile", "logfile.1", "logfile.2", then overwriting "logfile".<br />
95881853170c1ca02b650717fd416a2c2a5e3568ndAvailable in 2.4.5 and later.</dd>
95881853170c1ca02b650717fd416a2c2a5e3568nd
95881853170c1ca02b650717fd416a2c2a5e3568nd<dt><code><var>logfile</var></code></dt>
95881853170c1ca02b650717fd416a2c2a5e3568nd
95881853170c1ca02b650717fd416a2c2a5e3568nd<dd><p>The path plus basename of the logfile. If <var>logfile</var>
95881853170c1ca02b650717fd416a2c2a5e3568ndincludes any '%' characters, it is treated as a format string for
95881853170c1ca02b650717fd416a2c2a5e3568nd<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>
</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>
</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
<div class="section">
<h2><a name="examples" id="examples">Examples</a></h2>
<div class="example"><p><code>
CustomLog "|bin/rotatelogs /var/log/logfile 86400" common
</code></p></div>
<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>
<div class="example"><p><code>
CustomLog "|bin/rotatelogs -l /var/log/logfile.%Y.%m.%d 86400" common
</code></p></div>
<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>
<div class="example"><p><code>
CustomLog "|bin/rotatelogs /var/log/logfile 5M" common
</code></p></div>
<p>This configuration will rotate the logfile whenever it reaches
a size of 5 megabytes.</p>
<div class="example"><p><code>
ErrorLog "|bin/rotatelogs /var/log/errorlog.%Y-%m-%d-%H_%M_%S 5M"
</code></p></div>
<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>
<div class="example"><p><code>
CustomLog "|bin/rotatelogs -t /var/log/logfile 86400" common
</code></p></div>
<p>This creates the file /var/log/logfile, 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>
</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
<div class="section">
<h2><a name="portability" id="portability">Portability</a></h2>
<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 class="bordered"><tr><td><code>%A</code></td><td>full weekday name (localized)</td></tr>
<tr class="odd"><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 class="odd"><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 class="odd"><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 class="odd"><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 class="odd"><td><code>%M</code></td><td>2-digit minute</td></tr>
<tr><td><code>%m</code></td><td>2-digit month</td></tr>
<tr class="odd"><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 class="odd"><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 class="odd"><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 class="odd"><td><code>%x</code></td><td>date (localized)</td></tr>
<tr><td><code>%Y</code></td><td>4-digit year</td></tr>
<tr class="odd"><td><code>%y</code></td><td>2-digit year</td></tr>
<tr><td><code>%Z</code></td><td>time zone name</td></tr>
<tr class="odd"><td><code>%%</code></td><td>literal `%'</td></tr>
</table>
</div></div>
<div class="bottomlang">
<p><span>Available Languages: </span><a href="/en/programs/rotatelogs.html" title="English">&nbsp;en&nbsp;</a> |
<a href="/ko/programs/rotatelogs.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="/tr/programs/rotatelogs.html" hreflang="tr" rel="alternate" title="T�rk�e">&nbsp;tr&nbsp;</a></p>
</div><div class="top"><a href="#page-header"><img src="/images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Comments</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/trunk/programs/rotatelogs.html';
(function(w, d) {
if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
d.write('<div id="comments_thread"><\/div>');
var s = d.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
(d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
}
else {
d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
}
})(window, document);
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2014 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="/glossary.html">Glossary</a> | <a href="/sitemap.html">Sitemap</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
prettyPrint();
}
//--><!]]></script>
</body></html>