home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 November / CMCD1104.ISO / Software / Complet / Apache / apache_2.0.52-win32-x86-no_ssl.msi / Data.Cab / F278326_mod_log_config.xml < prev    next >
Extensible Markup Language  |  2004-09-04  |  19KB  |  449 lines

  1. <?xml version="1.0"?>
  2. <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
  3. <?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
  4. <!-- $Revision: 1.13.2.14 $ -->
  5.  
  6. <!--
  7.  Copyright 2002-2004 The Apache Software Foundation
  8.  
  9.  Licensed under the Apache License, Version 2.0 (the "License");
  10.  you may not use this file except in compliance with the License.
  11.  You may obtain a copy of the License at
  12.  
  13.      http://www.apache.org/licenses/LICENSE-2.0
  14.  
  15.  Unless required by applicable law or agreed to in writing, software
  16.  distributed under the License is distributed on an "AS IS" BASIS,
  17.  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  18.  See the License for the specific language governing permissions and
  19.  limitations under the License.
  20. -->
  21.  
  22. <modulesynopsis metafile="mod_log_config.xml.meta">
  23.  
  24. <name>mod_log_config</name>
  25. <description>Logging of the requests made to the server</description>
  26. <status>Base</status>
  27. <sourcefile>mod_log_config.c</sourcefile>
  28. <identifier>log_config_module</identifier>
  29.  
  30. <summary>
  31.     <p>This module provides for flexible logging of client
  32.     requests. Logs are written in a customizable format, and may be
  33.     written directly to a file, or to an external program.
  34.     Conditional logging is provided so that individual requests may
  35.     be included or excluded from the logs based on characteristics
  36.     of the request.</p>
  37.  
  38.     <p>Three directives are provided by this module:
  39.     <directive module="mod_log_config">TransferLog</directive> to create
  40.     a log file, <directive module="mod_log_config">LogFormat</directive>
  41.     to set a custom format, and <directive module="mod_log_config"
  42.     >CustomLog</directive> to define a log file and format in one
  43.     step. The <directive>TransferLog</directive> and <directive
  44.     >CustomLog</directive> directives can be used multiple times in each
  45.     server to cause each request to be logged to multiple files.</p>
  46. </summary>
  47. <seealso><a href="../logs.html">Apache Log Files</a></seealso>
  48.  
  49. <section id="formats"><title>Custom Log Formats</title>
  50.  
  51.     <p>The format argument to the <directive module="mod_log_config"
  52.     >LogFormat</directive> and <directive module="mod_log_config"
  53.     >CustomLog</directive> directives is a string. This string is
  54.     used to log each request to the log file. It can contain literal
  55.     characters copied into the log files and the C-style control
  56.     characters "\n" and "\t" to represent new-lines and tabs.
  57.     Literal quotes and back-slashes should be escaped with
  58.     back-slashes.</p>
  59.  
  60.     <p>The characteristics of the request itself are logged by
  61.     placing "<code>%</code>" directives in the format string, which are
  62.     replaced in the log file by the values as follows:</p>
  63.  
  64.     <table border="1" style="zebra">
  65.     <columnspec><column width=".2"/><column width=".8"/></columnspec>
  66.     <tr><th>Format String</th>
  67.         <th>Description</th></tr>
  68.  
  69.     <tr><td><code>%%</code></td>
  70.         <td>The percent sign (<em>Apache 2.0.44 and later</em>)</td></tr>
  71.  
  72.     <tr><td><code>%...a</code></td>
  73.         <td>Remote IP-address</td></tr>
  74.  
  75.     <tr><td><code>%...A</code></td>
  76.         <td>Local IP-address</td></tr>
  77.  
  78.     <tr><td><code>%...B</code></td>
  79.         <td>Bytes sent, excluding HTTP headers.</td></tr>
  80.  
  81.     <tr><td><code>%...b</code></td>
  82.         <td>Bytes sent, excluding HTTP headers. In CLF format, <em>i.e.</em>
  83.         a '<code>-</code>' rather than a 0 when no bytes are sent.</td></tr>
  84.  
  85.     <tr><td><code>%...{<var>Foobar</var>}C</code></td>
  86.         <td>The contents of cookie <var>Foobar</var> in the request sent
  87.         to the server.</td></tr>
  88.  
  89.     <tr><td><code>%...D</code></td>
  90.         <td>The time taken to serve the request, in microseconds.</td></tr>
  91.  
  92.     <tr><td><code>%...{<var>FOOBAR</var>}e</code></td>
  93.         <td>The contents of the environment variable
  94.         <var>FOOBAR</var></td></tr>
  95.  
  96.     <tr><td><code>%...f</code></td>
  97.         <td>Filename</td></tr>
  98.  
  99.     <tr><td><code>%...h</code></td>
  100.         <td>Remote host</td></tr>
  101.  
  102.     <tr><td><code>%...H</code></td>
  103.         <td>The request protocol</td></tr>
  104.  
  105.     <tr><td><code>%...{<var>Foobar</var>}i</code></td>
  106.         <td>The contents of <code><var>Foobar</var>:</code> header line(s)
  107.         in the request sent to the server.</td></tr>
  108.  
  109.     <tr><td><code>%...l</code></td>
  110.         <td>Remote logname (from identd, if supplied). This will return a
  111.         dash unless <directive
  112.         module="core">IdentityCheck</directive> is set
  113.         <code>On</code>.</td></tr>
  114.  
  115.     <tr><td><code>%...m</code></td>
  116.         <td>The request method</td></tr>
  117.  
  118.     <tr><td><code>%...{<var>Foobar</var>}n</code></td>
  119.         <td>The contents of note <var>Foobar</var> from another
  120.         module.</td></tr>
  121.  
  122.     <tr><td><code>%...{<var>Foobar</var>}o</code></td>
  123.         <td>The contents of <code><var>Foobar</var>:</code> header line(s)
  124.         in the reply.</td></tr>
  125.  
  126.     <tr><td><code>%...p</code></td>
  127.         <td>The canonical port of the server serving the request</td></tr>
  128.  
  129.     <tr><td><code>%...P</code></td>
  130.         <td>The process ID of the child that serviced the request.</td></tr>
  131.  
  132.     <tr><td><code>%...{<var>format</var>}P</code></td>
  133.         <td>The process ID or thread id of the child that serviced the 
  134.         request.  Valid formats are <code>pid</code> and <code>tid</code>.
  135.         (<em>Apache 2.0.46 and later</em>)
  136.         </td></tr>
  137.  
  138.     <tr><td><code>%...q</code></td>
  139.         <td>The query string (prepended with a <code>?</code> if a query
  140.         string exists, otherwise an empty string)</td></tr>
  141.  
  142.     <tr><td><code>%...r</code></td>
  143.         <td>First line of request</td></tr>
  144.  
  145.     <tr><td><code>%...s</code></td>
  146.         <td>Status. For requests that got internally redirected, this is
  147.         the status of the *original* request --- <code>%...>s</code>
  148.         for the last.</td></tr>
  149.  
  150.     <tr><td><code>%...t</code></td>
  151.         <td>Time, in common log format time format (standard english
  152.         format)</td></tr>
  153.  
  154.     <tr><td><code>%...{<var>format</var>}t</code></td>
  155.         <td>The time, in the form given by format, which should be in
  156.         <code>strftime(3)</code> format. (potentially localized)</td></tr>
  157.  
  158.     <tr><td><code>%...T</code></td>
  159.         <td>The time taken to serve the request, in seconds.</td></tr>
  160.  
  161.     <tr><td><code>%...u</code></td>
  162.         <td>Remote user (from auth; may be bogus if return status
  163.         (<code>%s</code>) is 401)</td></tr>
  164.  
  165.     <tr><td><code>%...U</code></td>
  166.         <td>The URL path requested, not including any query string.</td></tr>
  167.  
  168.     <tr><td><code>%...v</code></td>
  169.         <td>The canonical <directive module="core">ServerName</directive>
  170.         of the server serving the request.</td></tr>
  171.  
  172.     <tr><td><code>%...V</code></td>
  173.         <td>The server name according to the <directive module="core"
  174.         >UseCanonicalName</directive> setting.</td></tr>
  175.  
  176.     <tr><td><code>%...X</code></td>
  177.         <td>Connection status when response is completed:
  178.  
  179.         <table>
  180.         <columnspec><column width=".2"/><column width=".6"/></columnspec>
  181.         <tr><td><code>X</code> =</td>
  182.             <td>connection aborted before the response completed.</td></tr>
  183.         <tr><td><code>+</code> =</td>
  184.             <td>connection may be kept alive after the response is
  185.             sent.</td></tr>
  186.         <tr><td><code>-</code> = </td>
  187.             <td>connection will be closed after the response is
  188.             sent.</td></tr>
  189.         </table>
  190.  
  191.         <p>(This directive was <code>%...c</code> in late versions of Apache
  192.         1.3, but this conflicted with the historical ssl
  193.         <code>%...{<var>var</var>}c</code> syntax.)</p></td></tr>
  194.  
  195.     <tr><td><code>%...I</code></td>
  196.         <td>Bytes received, including request and headers, cannot be zero.
  197.         You need to enable <module>mod_logio</module> to use this.</td></tr>
  198.  
  199.     <tr><td><code>%...O</code></td>
  200.         <td>Bytes sent, including headers, cannot be zero. You need to
  201.         enable <module>mod_logio</module> to use this.</td></tr>
  202.     </table>
  203.  
  204.     <p>The "<var>...</var>" can be nothing at all (<em>e.g.</em>,
  205.     <code>"%h %u %r %s %b"</code>), or it can indicate conditions for
  206.     inclusion of the item (which will cause it to be replaced with "-" if
  207.     the condition is not met). The forms of condition are a list of
  208.     HTTP status codes, which may or may not be preceded by "!".
  209.     Thus, "%400,501{User-agent}i" logs <code>User-agent:</code> on 400
  210.     errors and 501 errors (Bad Request, Not Implemented) only;
  211.     "%!200,304,302{Referer}i" logs <code>Referer:</code> on all requests
  212.     which did <em>not</em> return some sort of normal status.</p>
  213.  
  214.     <p>The modifiers "<" and ">" can be used for requests that
  215.     have been internally redirected to choose whether the original or
  216.     final (respectively) request should be consulted.  By default, the
  217.     <code>%</code> directives <code>%s, %U, %T, %D,</code> and
  218.     <code>%r</code> look at the original request while all others look
  219.     at the final request.  So for example, <code>%>s</code> can be
  220.     used to record the final status of the request and
  221.     <code>%<u</code> can be used to record the original
  222.     authenticated user on a request that is internally redirected to an
  223.     unauthenticated resource.</p>
  224.  
  225.     <p>Note that in httpd 2.0 versions prior to 2.0.46, no escaping was performed
  226.     on the strings from <code>%...r</code>, <code>%...i</code> and
  227.     <code>%...o</code>. This was mainly to comply with the requirements of
  228.     the Common Log Format. This implied that clients could insert control
  229.     characters into the log, so you had to be quite careful when dealing
  230.     with raw log files.</p>
  231.  
  232.     <p>For security reasons, starting with 2.0.46, non-printable and
  233.     other special characters are escaped mostly by using
  234.     <code>\x<var>hh</var></code> sequences, where <var>hh</var> stands for
  235.     the hexadecimal representation of the raw byte. Exceptions from this
  236.     rule are <code>"</code> and <code>\</code> which are escaped by prepending
  237.     a backslash, and all whitespace characters which are written in their
  238.     C-style notation (<code>\n</code>, <code>\t</code> etc).</p>
  239.  
  240.     <p>Some commonly used log format strings are:</p>
  241.  
  242.     <dl>
  243.       <dt>Common Log Format (CLF)</dt>
  244.       <dd><code>"%h %l %u %t \"%r\" %>s %b"</code></dd>
  245.  
  246.       <dt>Common Log Format with Virtual Host</dt>
  247.       <dd><code>"%v %h %l %u %t \"%r\" %>s %b"</code></dd>
  248.  
  249.       <dt>NCSA extended/combined log format</dt>
  250.       <dd><code>"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"
  251.       \"%{User-agent}i\""</code></dd>
  252.  
  253.       <dt>Referer log format</dt>
  254.       <dd><code>"%{Referer}i -> %U"</code></dd>
  255.  
  256.       <dt>Agent (Browser) log format</dt>
  257.       <dd><code>"%{User-agent}i"</code></dd>
  258.     </dl>
  259.  
  260.     <p>Note that the canonical <directive module="core"
  261.     >ServerName</directive> and <directive module="mpm_common"
  262.     >Listen</directive> of the server serving the
  263.     request are used for <code>%v</code> and <code>%p</code>
  264.     respectively. This happens regardless of the <directive
  265.     module="core">UseCanonicalName</directive> setting
  266.     because otherwise log analysis programs would have to duplicate
  267.     the entire vhost matching algorithm in order to decide what
  268.     host really served the request.</p>
  269. </section>
  270.  
  271. <section id="security"><title>Security Considerations</title>
  272.     <p>See the <a
  273.     href="../misc/security_tips.html#serverroot">security tips</a>
  274.     document for details on why your security could be compromised
  275.     if the directory where logfiles are stored is writable by
  276.     anyone other than the user that starts the server.</p>
  277. </section>
  278.  
  279. <directivesynopsis>
  280. <name>CookieLog</name>
  281. <description>Sets filename for the logging of cookies</description>
  282. <syntax>CookieLog <var>filename</var></syntax>
  283. <contextlist><context>server config</context><context>virtual host</context>
  284. </contextlist>
  285. <compatibility>This directive is deprecated.</compatibility>
  286.  
  287. <usage>
  288.     <p>The <directive>CookieLog</directive> directive sets the 
  289.     filename for logging of cookies. The filename is relative to the
  290.     <directive module="core">ServerRoot</directive>. This directive is
  291.     included only for compatibility with <code>mod_cookies</code>,
  292.     and is deprecated.</p>
  293. </usage>
  294. </directivesynopsis>
  295.  
  296. <directivesynopsis>
  297. <name>CustomLog</name>
  298. <description>Sets filename and format of log file</description>
  299. <syntax>CustomLog  <var>file</var>|<var>pipe</var>
  300. <var>format</var>|<var>nickname</var>
  301. [env=[!]<var>environment-variable</var>]</syntax>
  302. <contextlist><context>server config</context><context>virtual host</context>
  303. </contextlist>
  304.  
  305. <usage>
  306.     <p>The <directive>CustomLog</directive> directive is used to
  307.     log requests to the server. A log format is specified, and the
  308.     logging can optionally be made conditional on request
  309.     characteristics using environment variables.</p>
  310.  
  311.     <p>The first argument, which specifies the location to which
  312.     the logs will be written, can take one of the following two
  313.     types of values:</p>
  314.  
  315.     <dl>
  316.       <dt><var>file</var></dt>
  317.       <dd>A filename, relative to the <directive module="core"
  318.       >ServerRoot</directive>.</dd>
  319.  
  320.       <dt><var>pipe</var></dt>
  321.       <dd>The pipe character "<code>|</code>", followed by the path
  322.       to a program to receive the log information on its standard
  323.       input.
  324.  
  325.       <note type="warning"><title>Security:</title>
  326.       <p>If a program is used, then it will be run as the user who
  327.       started httpd. This will be root if the server was started by root;
  328.       be sure that the program is secure.</p>
  329.       </note>
  330.       <note type="warning"><title>Note</title>
  331.         <p>When entering a file path on non-Unix platforms, care should be taken
  332.         to make sure that only forward slashed are used even though the platform
  333.         may allow the use of back slashes. In general it is a good idea to always 
  334.         use forward slashes throughout the configuration files.</p>
  335.       </note></dd>
  336.     </dl>
  337.  
  338.     <p>The second argument specifies what will be written to the
  339.     log file. It can specify either a <var>nickname</var> defined by
  340.     a previous <directive module="mod_log_config">LogFormat</directive>
  341.     directive, or it can be an explicit <var>format</var> string as
  342.     described in the <a href="#formats">log formats</a> section.</p>
  343.  
  344.     <p>For example, the following two sets of directives have
  345.     exactly the same effect:</p>
  346.  
  347.     <example>
  348.       # CustomLog with format nickname<br />
  349.       LogFormat "%h %l %u %t \"%r\" %>s %b" common<br />
  350.       CustomLog logs/access_log common<br />
  351.       <br />
  352.       # CustomLog with explicit format string<br />
  353.       CustomLog logs/access_log "%h %l %u %t \"%r\" %>s %b"
  354.     </example>
  355.  
  356.     <p>The third argument is optional and controls whether or
  357.     not to log a particular request based on the
  358.     presence or absence of a particular variable in the server
  359.     environment. If the specified <a href="../env.html">environment
  360.     variable</a> is set for the request (or is not set, in the case
  361.     of a '<code>env=!<var>name</var></code>' clause), then the
  362.     request will be logged.</p>
  363.  
  364.     <p>Environment variables can be set on a per-request
  365.     basis using the <module>mod_setenvif</module>
  366.     and/or <module>mod_rewrite</module> modules. For
  367.     example, if you want to record requests for all GIF
  368.     images on your server in a separate logfile but not in your main
  369.     log, you can use:</p>
  370.     
  371.     <example>
  372.       SetEnvIf Request_URI \.gif$ gif-image<br />
  373.       CustomLog gif-requests.log common env=gif-image<br />
  374.       CustomLog nongif-requests.log common env=!gif-image
  375.     </example>
  376. </usage>
  377. </directivesynopsis>
  378.  
  379. <directivesynopsis>
  380. <name>LogFormat</name>
  381. <description>Describes a format for use in a log file</description>
  382. <syntax>LogFormat <var>format</var>|<var>nickname</var>
  383. [<var>nickname</var>]</syntax>
  384. <default>LogFormat "%h %l %u %t \"%r\" %>s %b"</default>
  385. <contextlist><context>server config</context><context>virtual host</context>
  386. </contextlist>
  387.  
  388. <usage>
  389.     <p>This directive specifies the format of the access log
  390.     file.</p>
  391.  
  392.     <p>The <directive>LogFormat</directive> directive can take one of two
  393.     forms. In the first form, where only one argument is specified,
  394.     this directive sets the log format which will be used by logs
  395.     specified in subsequent <directive>TransferLog</directive>
  396.     directives. The single argument can specify an explicit
  397.     <var>format</var> as discussed in the <a href="#formats">custom log
  398.     formats</a> section above. Alternatively, it can use a
  399.     <var>nickname</var> to refer to a log format defined in a
  400.     previous <directive>LogFormat</directive> directive as described
  401.     below.</p>
  402.  
  403.     <p>The second form of the <directive>LogFormat</directive> 
  404.     directive associates an explicit <var>format</var> with a
  405.     <var>nickname</var>. This <var>nickname</var> can then be used in
  406.     subsequent <directive>LogFormat</directive> or
  407.     <directive module="mod_log_config">CustomLog</directive> directives
  408.     rather than repeating the entire format string. A
  409.     <directive>LogFormat</directive> directive that defines a nickname
  410.     <strong>does nothing else</strong> -- that is, it <em>only</em>
  411.     defines the nickname, it doesn't actually apply the format and make
  412.     it the default. Therefore, it will not affect subsequent
  413.     <directive module="mod_log_config">TransferLog</directive> directives.
  414.     In addition, <directive>LogFormat</directive> cannot use one nickname
  415.     to define another nickname. Note that the nickname should not contain
  416.     percent signs (<code>%</code>).</p>
  417.  
  418.     <example><title>Example</title>
  419.       LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost_common
  420.     </example>
  421. </usage>
  422. </directivesynopsis>
  423.  
  424. <directivesynopsis>
  425. <name>TransferLog</name>
  426. <description>Specify location of a log file</description>
  427. <syntax>TransferLog <var>file</var>|<var>pipe</var></syntax>
  428. <contextlist><context>server config</context><context>virtual host</context>
  429. </contextlist>
  430.  
  431. <usage>
  432.     <p>This directive has exactly the same arguments and effect as
  433.     the <directive module="mod_log_config">CustomLog</directive>
  434.     directive, with the exception that it does not allow the log format
  435.     to be specified explicitly or for conditional logging of requests.
  436.     Instead, the log format is determined by the most recently specified
  437.     <directive module="mod_log_config">LogFormat</directive> directive
  438.     which does not define a nickname. Common Log Format is used if no
  439.     other format has been specified.</p>
  440.  
  441.     <example><title>Example</title>
  442.       LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""<br />
  443.       TransferLog logs/access_log
  444.     </example>
  445. </usage>
  446. </directivesynopsis>
  447.  
  448. </modulesynopsis>
  449.