<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
<!-- $Revision: 1.7 $ -->

<!--
 Copyright 2002-2004 The Apache Software Foundation

 Licensed 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.
-->

<modulesynopsis metafile="mod_logio.xml.meta">

<name>mod_logio</name>
<description>Logging of input and output bytes per request</description>
<status>Extension</status>
<sourcefile>mod_logio.c</sourcefile>
<identifier>logio_module</identifier>

<summary>

    <p>This module provides the logging of input and output number of
    bytes received/sent per request. The numbers reflect the actual bytes
    as received on the network, which then takes into account the
    headers and bodies of requests and responses. The counting is done
    before SSL/TLS on input and after SSL/TLS on output, so the numbers
    will correctly reflect any changes made by encryption.</p>

    <p>This module requires <module>mod_log_config</module>.</p>

</summary>

<seealso><module>mod_log_config</module></seealso>
<seealso><a href="../logs.html">Apache Log Files</a></seealso>

<section id="formats">
<title>Custom Log Formats</title>

    <p>This modules adds two new logging directives. The characteristics of the
    request itself are logged by placing "<code>%</code>" directives in
    the format string, which are replaced in the log file by the values as
    follows:</p>

    <table border="1" style="zebra">
    <tr><th>Format&nbsp;String</th>
        <th>Description</th></tr>

    <tr><td><code>%...I</code></td>
        <td>Bytes received, including request and headers, cannot be
        zero.</td></tr>

    <tr><td><code>%...O</code></td>
        <td>Bytes sent, including headers, cannot be zero.</td></tr>
    </table>

    <p>Usually, the functionality is used like this:</p>

    <dl>
      <dt>Combined I/O log format:</dt>
      <dd><code>"%h %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\"
      \"%{User-agent}i\" %I %O"</code></dd>
    </dl>
</section>

</modulesynopsis>
