<!DOCTYPE Book PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [

<!-- read http://www.docbook.org/ vor more info in docbook -->

]>

<Book lang="en">
<BookInfo>

   <Title>ModLogAn</Title>
   <SubTitle>a modular logfile analyser</SubTitle>
   <Author>
      <Honorific></Honorific>
      <FirstName>Jan</FirstName>
      <OtherName></OtherName>
      <SurName>Kneschke</SurName>
      <Affiliation>
         <ShortAffil></ShortAffil>
         <JobTitle></JobTitle>
         <OrgName></OrgName>
         <OrgDiv></OrgDiv>
       </Affiliation>
    </Author>
   <PubDate>$Date: 2003/05/17 18:53:51 $</PubDate>

   <Abstract>
     <Para>
     This is the manual for ModLogAn, a flexible logfile analyser written in
     C. 
      </Para>
   </Abstract>

</BookInfo>


<Preface>
<Title>Preface</Title>
 <Para>
 Covering all topics of modlogan is not an easy task. The average user
 expaects a explaination for the generated output, admins want to know how
 configure modlogan in the way they want to and developers need a reference
 which helps them to understand how the code behaves/should behave.
 </Para>
 <Para>
 This manual try to reach these aim. To accomplish them the manual is
 sepearted into 4 parts.
 <itemizedlist>
   <listitem>
     <para>
       The green book for the user of modlogan who needs support in reading
       the output
     </para>
   </listitem>
   <listitem>
     <para>
       The yellow book for administrators which gives an overview how
       modlogan is intented to be used and provides several scenarios which
       can be used as a starting point for a initial setup
     </para>
   </listitem>
   <listitem>
     <para>
       The blue book is for developers and provides the documentation of the
       internals of modlogan.
     </para>
   </listitem>
   <listitem>
     <para>
       The black book is a reference and covers all configfile options and
       there behaviour. As it is generated from the source-code it is always
       fresh.
     </para>
   </listitem>
 </itemizedlist>

 </Para>
</Preface>

<Chapter>
 <Title>Introduction</Title>
 <Para>
 ( If I could write a introduction I would write a real book )
 </Para>
</Chapter>

<chapter id="greenbook">
<title>the green book</title>
<para>
The green give the user of modlogan an overview over the generated output.
It explains every report in depth and provides extensive informations in the
used words, descriptions and numbers.
</para>
<para>
Before the output can be explained you have to know how and which input
can be processed. As modlogan is a very flexible it supports many different
input format from various programs. It starts with the standard webserver
logfiles from a Apache and doesn't really stop with logfiles from
mailservers like qmail or a sendmail.
</para>
<sect1 id="bla">
<title>connecting plugins</title>

<para>
modlogan is based on three types of plugins:
<orderedlist>
  <listitem>
    <para>
    input (the parser)
    </para>
  </listitem>
  <listitem>
    <para>
      processor (take the data from the parser and pre-process them)
    </para>
  </listitem>
  <listitem>
    <para>
      output (the the pre-processed data and transform them into a viewable
      output)
    </para>
  </listitem>
</orderedlist>

In the standard configuration modlogan parses webservers logs (clf), processes
them (web) and generates a eye-friendly HTML output (modlogan) which also includes several
graphics which help to get a overview what those number represent.

</para>
<sect2 id="parser">
<title>Parser</title>
<para>
It's the job of the parser to take the input, cut it in to nice pieces and
to validate eash field if it contains valid data. We take the parser from
the above mentioned standard configuration for a short looks into the
internals of a parser.
</para>
<para>
The input for the so called `clf' parser are records in the follow format:
</para>
<para>
<computeroutput>212.126.17.130 - - [11/Jun/2000:07:23:15 +0200] ``GET /'' 200 2695 ``-'' ``-''</computeroutput>
</para>
<para>
First we have an IP-address (<computeroutput>212.126.17.130</computeroutput>) 
of the client which has queryed this webserver at a given time 
(<computeroutput>11/Jun/2000:07:23:15 +0200</computeroutput>) for the index-page 
(<computeroutput>GET /</computeroutput>). The webserver fullfilled this request 
and returned with status code <computeroutput>200</computeroutput> which just 
means OK. The webserver transfered 2695 bytes to the client.
</para>
<para>
The parser is exactly doing this job. It seperates the field, extacts the
data and transforms them into the machine-readable format. 
</para>

</sect2>
<sect2 id="processor">
<title>Processor</title>

<para>
 If the parser is doing it job well the processor can take the parsed
 records and make calculations an them. 
</para>
<para>
 The processor which is selected by the standard configuration for this job
 is the `web' processor which can process most of the logfiles which are
 generated by the servers which (in common sense) form `the web'. This
 include HTTP-server (apache, netscape, ms iis, ...), FTP-servers (wuftpd,
 proftpd, pureftpd, the ftpd which is shipped with FreeBSD) and
 PROXY-servers like Squid.
</para>
<para>
 All these servers have one thing in common. They are IP-based and are 
 transfering files. Other processors are handling mail-traffic which has a
 different characteristic which can't be handled by the web processor. 
</para>
<para>
  The web processor generates several statistics like:
  <orderedlist>
    <listitem>
      <para>
      <xref linkend="hits">, <xref linkend="pages">, <xref
      linkend="files">, <xref linkend="visits"> and transfered bytes per day and hour
      </para>
    </listitem>
    <listitem>
      <para>
        generates the so called <xref linkend="visits"> (user sessions) from the sessionless
	stream of input data. 
      </para>
    </listitem>
    <listitem>
      <para>
        removes and combines several fields based on rules provided by the
	configfiles
      </para>
    </listitem>
    <listitem>
      <para>
        extracts some extra information from the records like searchengines,
	bookmarked pages und pages which were indexed by robots.
      </para>
    </listitem>
</orderedlist>
These statistics are just containing raw data. You can see them into
XML-files which are generated as the so called `state-files' which contains
the internal state after the last record has been processed. 
</para>

</sect2>
<sect2 id="output">
<title>Output generator</title>

<para>
As the XML which is generated by the processor is not readable for all
humans it is transformed into a HTML with additional graphics which
illustrate the huge amount of numbers.  
</para>

<para>
</para>

</sect2>
</sect1>

<sect1 id="glossary">
<title>Glossary</title>
<para>
blas
</para>
<glossary>
<glossentry id="hits"><glossterm>Hits</glossterm>
<glossdef>
<para>
Hits are the only physical data a webserver log provides. Each request that
is set to the server is logged int eh logfile. These requests are called hits.
</para>
</glossdef>
</glossentry>

<glossentry id="pages"><glossterm>Pages</glossterm>
<glossdef>
<para>
If you browse through a website your browser sends a request to the
webserver which requests the initial HTML-Source and each in the HTML source 
inserted images. `Pages' are only those hits which deliver the HTML-source
to the browser. 
</para>
</glossdef>
</glossentry>
<glossentry id="files"><glossterm>Files</glossterm>
<glossdef>
<para>
Files classify the htis which resulted in a data transfer. Sometime the
server doesn't have to transmit a reuested file as the browser already has
the latest version in its cache. Only a transfer (hits) is finished with a status
code 200 it is counted as File.
</para>
</glossdef>
</glossentry>
<glossentry id="visits"><glossterm>Visits</glossterm>
<glossdef>
<para>
Foreword: Visits are a pure statistical value. Don't compare them between
with logfile analyzer. They will vary. HTTP doesn't provide the data to do
real visit counting.
</para>
<para>

</para>
</glossdef>
</glossentry>
</glossary>

</sect1>

</chapter>
<chapter>
<title>the yellow book</title>

<sect1 id="configfiles">
<title>Configfiles</title>

<para>
  modlogan uses a very simple and easy to understand configfile format. The
  configuration can be done with a texteditor like emacs, vi or joe. Even
  notepad (for out windows uses) should be sufficent as the configfile is
  plain ASCII.
</para>
<para>
  Each configfile is divided into several sections. Each section starts with
  a sectionname.
  <programlisting>
  [section]
  </programlisting>
  
  The configvalue are following a very simple `key = value' rule.
  
  <programlisting>
  key = value
  </programlisting>
  whitespaces before and after the equal sign are ignored.
  
  
  Comments are only a starting with `#' as first character in a line.
  
  <programlisting>
  # comment
  </programlisting>
</para>

<para>
  A small example will show how to write dummy config-file:
  <programlisting>
  # this is a dummy configfile for the readers of the manual
  # let's start with a section named `dummy'
  [dummy]
  input = /etc/passwd
  outputfile = /tmp/secret
  </programlisting>
</para>

<para>
  The value of each `key-value-pair' can follow of these rules
  <itemizedlist>
    <listitem>
      <para>
        a plain string 
	<programlisting>inputfile = /home/www/logs/access.log</programlisting>
      </para>
    </listitem>
    <listitem>
      <para>
        a colortripple
	<programlisting>col_circle = #E8F174</programlisting>
      </para>
    </listitem>
    <listitem>
      <para>
        a regular exprecssion
	<programlisting>hideurl = "\.gif$"</programlisting>
      </para>
    </listitem>
    <listitem>
      <para>
        a group rule 
	<programlisting>groupextension = "\.gif",GIF images</programlisting>
      </para>
    </listitem>
  </itemizedlist>

</para>

<sect2 id="configinclude">
<title>Including external configfiles</title>

<para>
  
</para>


</sect2>


</sect1>

<sect1 id="resolver">
<title>resolving IPs</title>

<para>
Most logfile contain IP addresses which have to transformed into
human-readable domainnames for the can really be processed. This is the job
of a resolver.  
</para>

<para>
  modlogan has an internal resolver which intented for all those users which
  don't want to install a `professional', external resolver. This internal
  is not tuned into any direction. Please don't complain about speed. Use a
  external resolver instead.
</para>

<sect2 id="resolverinternal">
<title>internal resolver</title>

<para>
  The internal resolver is controlled by two configvariables:
  <programlisting>
  [global]
  <xref linkend="global-enableresolver">     = 1
  [input_clf]
  <xref linkend="input-clf-readaheadlimit">      = 1000
  </programlisting>
  
  
</para>
</sect2>

<sect2 id="resolverexternal">
<title>external resolver</title>

<para>
  As already said, external resolvers are preferred. The following resolver
  are verified to work with modlogan:
  <itemizedlist>
    <listitem>
      <para>
        <ulink url="http://freshmeat.net/projects/adns/"><citetitle>adnslogres</citetitle></ulink>
      </para>
    </listitem>
    <listitem>
      <para>
	<ulink url="http://www.jdrowell.com/Linux/Projects/jdresolve/">
	  <citetitle>jdresolve</citetitle>
	</ulink>
      </para>
    </listitem>
  </itemizedlist>
  As most resolvers expect the input at stdin and write the resolved records
  to stdout they very easy to integrate into the logfile crunching process.
  
  <programlisting>
  $ gzip -cd /home/www/logs/access.log.gz | \
    jdresolve &lt;options&gt; | \
    modlogan -c &lt;config-file&gt;
  </programlisting>
  
  the <xref linkend="input-clf-inputfile"> is set to `-' in this case to read from stdin.
</para>
</sect2>
</sect1>

<sect1 id="config">
<title>clustered webservers</title>

<para>
In clustered server environments every webserver is generating its own
logfile. modlogan is prepared process these logs without any external help.
</para>

<para>
A external loadbalancer is dispatching request to two Netscape Enterprise
Webservers. Both servers are generating their own logfiles. 
</para>
<para>
<programlisting>
[global]
<xref linkend="global-includepath">     = /path/to/modlogan/etc/
<xref linkend="global-include">         = modlogan.def.conf, global
 
<xref linkend="global-loadplugin">      = input_netscape,input_lb_1
<xref linkend="global-loadplugin">      = input_netscape,input_lb_2
<xref linkend="global-loadplugin">      = output_null
<xref linkend="global-loadplugin">      = processor_null
  
<xref linkend="global-outputdir">       = /path/to/output/
<xref linkend="global-incremental">     = 1
<xref linkend="global-debuglevel">     = 2
   
[processor_null]
    
[output_null]
     
[input_lb_1]
<xref linkend="global-include">         = modlogan.def.conf, input_netscape
<xref linkend="input-netscape-inputfile">       = /path/to/logs/log.netscape.lb-1
      
[input_lb_2]
<xref linkend="global-include">         = modlogan.def.conf, input_netscape
<xref linkend="input-netscape-inputfile">       = /path/to/logs/log.netscape.lb-2
</programlisting>  
</para>

<para>
The <xref linkend="global-loadplugin"> directive loads the plugin
input_netscape with two different configurations. One is using the first
logfile the other the logfile from the second webserver.
</para>

<para>
  Both input stream are merged based on the timestamps. As always the
  logfiles are expected to be chornological.
</para>

</sect1>

</chapter>
<chapter>
<title>the blue book</title>

<para>
  
</para>

</chapter>
<chapter>
<title>the black book</title>

<sect1>
<title>processor_telecom</title>
 <refentry id="processor-telecom-priceperunit">
  <refnamediv>
   <refname>price_per_unit</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-telecom-subprocessor">
  <refnamediv>
   <refname>subprocessor</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>processor_firewall</title>
 <para></para>
</sect1>
<sect1>
<title>processor_null</title>
 <para></para>
</sect1>
<sect1>
<title>processor_mail</title>
 <refentry id="processor-mail-groupreceipient">
  <refnamediv>
   <refname>groupreceipient</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-mail-groupsender">
  <refnamediv>
   <refname>groupsender</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-mail-hidereceipient">
  <refnamediv>
   <refname>hidereceipient</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-mail-hidesender">
  <refnamediv>
   <refname>hidesender</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-mail-ignorereceipient">
  <refnamediv>
   <refname>ignorereceipient</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-mail-ignoresender">
  <refnamediv>
   <refname>ignoresender</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>processor_web</title>
 <refentry id="processor-web-debugresolver">
  <refnamediv>
   <refname>debug_resolver</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-web-debugsearchengines">
  <refnamediv>
   <refname>debug_searchengines</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-web-debugvisits">
  <refnamediv>
   <refname>debug_visits</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-web-groupbrokenlinks">
  <refnamediv>
   <refname>groupbrokenlinks</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-web-groupextension">
  <refnamediv>
   <refname>groupextension</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-web-grouphosts">
  <refnamediv>
   <refname>grouphosts</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-web-groupos">
  <refnamediv>
   <refname>groupos</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-web-groupreferrer">
  <refnamediv>
   <refname>groupreferrer</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-web-grouprobots">
  <refnamediv>
   <refname>grouprobots</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-web-groupsearchstrings">
  <refnamediv>
   <refname>groupsearchstrings</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-web-groupua">
  <refnamediv>
   <refname>groupua</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-web-groupurl">
  <refnamediv>
   <refname>groupurl</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-web-hidebrokenlinks">
  <refnamediv>
   <refname>hidebrokenlinks</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-web-hideextension">
  <refnamediv>
   <refname>hideextension</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-web-hidehost">
  <refnamediv>
   <refname>hidehost</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-web-hidereferrer">
  <refnamediv>
   <refname>hidereferrer</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-web-hiderobots">
  <refnamediv>
   <refname>hiderobots</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-web-hideurl">
  <refnamediv>
   <refname>hideurl</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-web-ignorehost">
  <refnamediv>
   <refname>ignorehost</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-web-ignoreua">
  <refnamediv>
   <refname>ignoreua</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-web-ignoreurl">
  <refnamediv>
   <refname>ignoreurl</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-web-pagetype">
  <refnamediv>
   <refname>pagetype</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
to distiguish between pages and files you have to specify which urls should
be counted as pages.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-web-searchengines">
  <refnamediv>
   <refname>searchengines</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-web-splitby">
  <refnamediv>
   <refname>splitby</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
splits a stream of record into different output streams.
the value is in the format:
field,"regex",unique_name
where field is the field which shall be checked, regex is the regular
expression which shall be applied on the field and unique_name is the name
the output stream. the unique_name is also used for the name of the directory 
which will be used to write the output into. (&lt;outputdir&gt;/&lt;unique_name&gt;/index.html)
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="processor-web-visittimeout">
  <refnamediv>
   <refname>visit_timeout</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>processor_accounting</title>
 <para></para>
</sect1>
<sect1>
<title>processor_skeleton</title>
 <para></para>
</sect1>
<sect1>
<title>input_qtss</title>
 <refentry id="input-qtss-inputfile">
  <refnamediv>
   <refname>inputfile</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
name of the file which will be used as the input source. use '-' for stdin
as input source.
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>input_msmedia</title>
 <refentry id="input-msmedia-inputfile">
  <refnamediv>
   <refname>inputfile</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
name of the file which will be used as the input source. use '-' for stdin
as input source.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="input-msmedia-matchos">
  <refnamediv>
   <refname>matchos</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="input-msmedia-matchua">
  <refnamediv>
   <refname>matchua</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>input_clf</title>
 <refentry id="input-clf-format">
  <refnamediv>
   <refname>format</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="input-clf-inputfile">
  <refnamediv>
   <refname>inputfile</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
name of the file which will be used as the input source. use '-' for stdin
as input source.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="input-clf-matchos">
  <refnamediv>
   <refname>matchos</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="input-clf-matchua">
  <refnamediv>
   <refname>matchua</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="input-clf-readaheadlimit">
  <refnamediv>
   <refname>readaheadlimit</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>input_null</title>
 <para></para>
</sect1>
<sect1>
<title>input_flowraw</title>
 <refentry id="input-flowraw-inputfile">
  <refnamediv>
   <refname>inputfile</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
name of the file which will be used as the input source. use '-' for stdin
as input source.
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>input_flow</title>
 <refentry id="input-flow-inputfile">
  <refnamediv>
   <refname>inputfile</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
name of the file which will be used as the input source. use '-' for stdin
as input source.
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>input_realserver</title>
 <refentry id="input-realserver-inputfile">
  <refnamediv>
   <refname>inputfile</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
name of the file which will be used as the input source. use '-' for stdin
as input source.
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>input_bsdftpd</title>
 <refentry id="input-bsdftpd-inputfile">
  <refnamediv>
   <refname>inputfile</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
name of the file which will be used as the input source. use '-' for stdin
as input source.
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>input_isdnlog</title>
 <refentry id="input-isdnlog-inputfile">
  <refnamediv>
   <refname>inputfile</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
name of the file which will be used as the input source. use '-' for stdin
as input source.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="input-isdnlog-splitprovider">
  <refnamediv>
   <refname>split_provider</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
in germany you have to dial the call-by-call provider id before the actual
phone number.
set split_provider to '1' if you want to split the provider from the dialed
phone number. '0' disables this feature.
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>input_elmeg</title>
 <refentry id="input-elmeg-inputfile">
  <refnamediv>
   <refname>inputfile</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
name of the file which will be used as the input source. use '-' for stdin
as input source.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="input-elmeg-serialbaud">
  <refnamediv>
   <refname>serial_baud</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="input-elmeg-serialdatabits">
  <refnamediv>
   <refname>serial_databits</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="input-elmeg-serialflowhard">
  <refnamediv>
   <refname>serial_flow_hard</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="input-elmeg-serialparity">
  <refnamediv>
   <refname>serial_parity</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="input-elmeg-splitprovider">
  <refnamediv>
   <refname>split_provider</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
in germany you have to dial the call-by-call provider id before the actual
phone number.
set split_provider to '1' if you want to split the provider from the dialed
phone number. '0' disables this feature.
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>input_viruswall</title>
 <refentry id="input-viruswall-inputfile">
  <refnamediv>
   <refname>inputfile</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
name of the file which will be used as the input source. use '-' for stdin
as input source.
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>input_shoutcast</title>
 <refentry id="input-shoutcast-inputfile">
  <refnamediv>
   <refname>inputfile</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
name of the file which will be used as the input source. use '-' for stdin
as input source.
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>input_pureftpd</title>
 <refentry id="input-pureftpd-inputfile">
  <refnamediv>
   <refname>inputfile</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
name of the file which will be used as the input source. use '-' for stdin
as input source.
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>input_hicom116</title>
 <refentry id="input-hicom116-inputfile">
  <refnamediv>
   <refname>inputfile</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
name of the file which will be used as the input source. use '-' for stdin
as input source.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="input-hicom116-serialbaud">
  <refnamediv>
   <refname>serial_baud</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="input-hicom116-serialdatabits">
  <refnamediv>
   <refname>serial_databits</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="input-hicom116-serialflowhard">
  <refnamediv>
   <refname>serial_flow_hard</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="input-hicom116-serialparity">
  <refnamediv>
   <refname>serial_parity</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="input-hicom116-splitprovider">
  <refnamediv>
   <refname>split_provider</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
in germany you have to dial the call-by-call provider id before the actual
phone number.
set split_provider to '1' if you want to split the provider from the dialed
phone number. '0' disables this feature.
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>input_qmail</title>
 <refentry id="input-qmail-inputfile">
  <refnamediv>
   <refname>inputfile</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
name of the file which will be used as the input source. use '-' for stdin
as input source.
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>input_msiis</title>
 <refentry id="input-msiis-inputfile">
  <refnamediv>
   <refname>inputfile</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
name of the file which will be used as the input source. use '-' for stdin
as input source.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="input-msiis-matchos">
  <refnamediv>
   <refname>matchos</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="input-msiis-matchua">
  <refnamediv>
   <refname>matchua</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>input_netscape</title>
 <refentry id="input-netscape-inputfile">
  <refnamediv>
   <refname>inputfile</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
name of the file which will be used as the input source. use '-' for stdin
as input source.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="input-netscape-matchos">
  <refnamediv>
   <refname>matchos</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="input-netscape-matchua">
  <refnamediv>
   <refname>matchua</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>input_squid</title>
 <refentry id="input-squid-inputfile">
  <refnamediv>
   <refname>inputfile</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
name of the file which will be used as the input source. use '-' for stdin
as input source.
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>input_wuftpd</title>
 <refentry id="input-wuftpd-inputfile">
  <refnamediv>
   <refname>inputfile</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
name of the file which will be used as the input source. use '-' for stdin
as input source.
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>input_ipchains</title>
 <refentry id="input-ipchains-inputfile">
  <refnamediv>
   <refname>inputfile</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
name of the file which will be used as the input source. use '-' for stdin
as input source.
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>input_sendmail</title>
 <refentry id="input-sendmail-inputfile">
  <refnamediv>
   <refname>inputfile</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
name of the file which will be used as the input source. use '-' for stdin
as input source.
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>input_skeleton</title>
 <refentry id="input-skeleton-inputfile">
  <refnamediv>
   <refname>inputfile</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
name of the file which will be used as the input source. use '-' for stdin
as input source.
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>output_null</title>
 <para></para>
</sect1>
<sect1>
<title>output_modlogan</title>
 <refentry id="output-modlogan-assumedprotocol">
  <refnamediv>
   <refname>assumedprotocol</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-background">
  <refnamediv>
   <refname>background</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-border">
  <refnamediv>
   <refname>border</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-contentcharset">
  <refnamediv>
   <refname>content_charset</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-contentlanguage">
  <refnamediv>
   <refname>content_language</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-countrycircle">
  <refnamediv>
   <refname>country_circle</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-cssfile">
  <refnamediv>
   <refname>cssfile</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-dontcuturls">
  <refnamediv>
   <refname>dont_cut_urls</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-dontescapeentities">
  <refnamediv>
   <refname>dont_escape_entities</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-files">
  <refnamediv>
   <refname>files</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-foreground">
  <refnamediv>
   <refname>foreground</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-hits">
  <refnamediv>
   <refname>hits</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-hostname">
  <refnamediv>
   <refname>hostname</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-htmlfooter">
  <refnamediv>
   <refname>htmlfooter</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
htmlfooter specifies the file which should be included into the html-file to
replace the original html-footer. 
NOTE: you have to take care that the html-page is closed. only the closing
TABLE tag for the report is written to the outputfile.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-htmlheader">
  <refnamediv>
   <refname>htmlheader</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
if you want to replace the default page header, you can provide a filename
here which will be included instead.
NOTE: only the starting TABLE tag for the report is written. the rest is in
the hand of the user -&gt; you !! don't forget the DOCTYPE, HTML tags and the
LINK to the STYLESHEETS.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-maxbookmarks">
  <refnamediv>
   <refname>maxbookmarks</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Bookmarked Pages". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-maxbrokenlinks">
  <refnamediv>
   <refname>maxbrokenlinks</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Broken Links". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-maxcountries">
  <refnamediv>
   <refname>maxcountries</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Countries". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-maxentrypages">
  <refnamediv>
   <refname>maxentrypages</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Entry Pages". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-maxexitpages">
  <refnamediv>
   <refname>maxexitpages</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Exit Pages". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-maxextensions">
  <refnamediv>
   <refname>maxextensions</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-maxhosts">
  <refnamediv>
   <refname>maxhosts</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Hosts". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-maxindexedpages">
  <refnamediv>
   <refname>maxindexedpages</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Indexed Pages". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-maxinteralerrors">
  <refnamediv>
   <refname>maxinteralerrors</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Internal Errors". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-maxos">
  <refnamediv>
   <refname>maxos</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Operating system". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-maxrefurls">
  <refnamediv>
   <refname>maxrefurls</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Referrers". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-maxreqmeth">
  <refnamediv>
   <refname>maxreqmeth</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Request Method". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-maxreqprot">
  <refnamediv>
   <refname>maxreqprot</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Request Protocol". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-maxrequrls">
  <refnamediv>
   <refname>maxrequrls</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Requested URL's". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-maxrobots">
  <refnamediv>
   <refname>maxrobots</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Robots". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-maxsearchengines">
  <refnamediv>
   <refname>maxsearchengines</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "SearchEngines". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-maxsearchstrings">
  <refnamediv>
   <refname>maxsearchstrings</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "SearchStrings". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-maxstatuscodes">
  <refnamediv>
   <refname>maxstatuscodes</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Status Code". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-maxua">
  <refnamediv>
   <refname>maxua</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Browsers". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-maxvhosts">
  <refnamediv>
   <refname>maxvhosts</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-maxviewdurations">
  <refnamediv>
   <refname>maxviewdurations</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-maxvisitdurations">
  <refnamediv>
   <refname>maxvisitdurations</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-maxvisitpathlengths">
  <refnamediv>
   <refname>maxvisitpathlengths</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-maxvisitpaths">
  <refnamediv>
   <refname>maxvisitpaths</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-pages">
  <refnamediv>
   <refname>pages</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-pagestyle">
  <refnamediv>
   <refname>pagestyle</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-shadow">
  <refnamediv>
   <refname>shadow</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-showcountrygraph">
  <refnamediv>
   <refname>showcountrygraph</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-showdailygraph">
  <refnamediv>
   <refname>showdailygraph</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-showhourlygraph">
  <refnamediv>
   <refname>showhourlygraph</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-showmonthlygraph">
  <refnamediv>
   <refname>showmonthlygraph</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-showvalidationlinks">
  <refnamediv>
   <refname>showvalidationlinks</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-showvhostgraph">
  <refnamediv>
   <refname>showvhostgraph</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-vhostcircle">
  <refnamediv>
   <refname>vhost_circle</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-visits">
  <refnamediv>
   <refname>visits</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-modlogan-xfer">
  <refnamediv>
   <refname>xfer</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>output_text</title>
 <refentry id="output-text-hostname">
  <refnamediv>
   <refname>hostname</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>output_webalizer</title>
 <refentry id="output-webalizer-background">
  <refnamediv>
   <refname>background</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-webalizer-body">
  <refnamediv>
   <refname>body</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-webalizer-files">
  <refnamediv>
   <refname>files</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-webalizer-grouping">
  <refnamediv>
   <refname>grouping</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-webalizer-hits">
  <refnamediv>
   <refname>hits</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-webalizer-hostname">
  <refnamediv>
   <refname>hostname</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-webalizer-hosts">
  <refnamediv>
   <refname>hosts</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-webalizer-maxbookmarks">
  <refnamediv>
   <refname>maxbookmarks</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Bookmarked Pages". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-webalizer-maxbrokenlinks">
  <refnamediv>
   <refname>maxbrokenlinks</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Broken Links". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-webalizer-maxcountries">
  <refnamediv>
   <refname>maxcountries</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Countries". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-webalizer-maxentrypages">
  <refnamediv>
   <refname>maxentrypages</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Entry Pages". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-webalizer-maxexitpages">
  <refnamediv>
   <refname>maxexitpages</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Exit Pages". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-webalizer-maxhosts">
  <refnamediv>
   <refname>maxhosts</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Hosts". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-webalizer-maxindexedpages">
  <refnamediv>
   <refname>maxindexedpages</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Indexed Pages". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-webalizer-maxinteralerrors">
  <refnamediv>
   <refname>maxinteralerrors</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Internal Errors". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-webalizer-maxos">
  <refnamediv>
   <refname>maxos</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Operating system". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-webalizer-maxrefurls">
  <refnamediv>
   <refname>maxrefurls</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Referrers". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-webalizer-maxreqmeth">
  <refnamediv>
   <refname>maxreqmeth</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Request Method". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-webalizer-maxreqprot">
  <refnamediv>
   <refname>maxreqprot</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Request Protocol". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-webalizer-maxrequrls">
  <refnamediv>
   <refname>maxrequrls</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Requested URL's". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-webalizer-maxrobots">
  <refnamediv>
   <refname>maxrobots</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Robots". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-webalizer-maxsearchengines">
  <refnamediv>
   <refname>maxsearchengines</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "SearchEngines". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-webalizer-maxsearchstrings">
  <refnamediv>
   <refname>maxsearchstrings</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "SearchStrings". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-webalizer-maxstatuscodes">
  <refnamediv>
   <refname>maxstatuscodes</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Status Code". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-webalizer-maxua">
  <refnamediv>
   <refname>maxua</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
maximum entries in the report named "Browsers". a value of '0'
disables this report.
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-webalizer-pages">
  <refnamediv>
   <refname>pages</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-webalizer-shadow">
  <refnamediv>
   <refname>shadow</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-webalizer-visits">
  <refnamediv>
   <refname>visits</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-webalizer-xfer">
  <refnamediv>
   <refname>xfer</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>output_tkcontrol</title>
 <refentry id="output-tkcontrol-background">
  <refnamediv>
   <refname>background</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-tkcontrol-calls">
  <refnamediv>
   <refname>calls</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-tkcontrol-grouping">
  <refnamediv>
   <refname>grouping</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-tkcontrol-hostname">
  <refnamediv>
   <refname>hostname</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-tkcontrol-incoming">
  <refnamediv>
   <refname>incoming</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-tkcontrol-maxcallednumbers">
  <refnamediv>
   <refname>maxcallednumbers</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-tkcontrol-maxcallingnumbers">
  <refnamediv>
   <refname>maxcallingnumbers</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-tkcontrol-outgoing">
  <refnamediv>
   <refname>outgoing</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-tkcontrol-pagestyle">
  <refnamediv>
   <refname>pagestyle</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-tkcontrol-shadow">
  <refnamediv>
   <refname>shadow</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-tkcontrol-xfer">
  <refnamediv>
   <refname>xfer</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>output_template</title>
 <refentry id="output-template-assumedprotocol">
  <refnamediv>
   <refname>assumedprotocol</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-template-contentcharset">
  <refnamediv>
   <refname>content_charset</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-template-contentlanguage">
  <refnamediv>
   <refname>content_language</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-template-countrycircle">
  <refnamediv>
   <refname>country_circle</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-template-dontcuturls">
  <refnamediv>
   <refname>dont_cut_urls</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-template-dontescapeentities">
  <refnamediv>
   <refname>dont_escape_entities</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="output-template-hostname">
  <refnamediv>
   <refname>hostname</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
</sect1>
<sect1>
<title>global</title>
 <refentry id="global-compressmode">
  <refnamediv>
   <refname>compress_mode</refname>
   <refpurpose>set the compression level of the XML-files</refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="global-debuglevel">
  <refnamediv>
   <refname>debug_level</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="global-enableresolver">
  <refnamediv>
   <refname>enable_resolver</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="global-genreportthreshold">
  <refnamediv>
   <refname>gen_report_threshold</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="global-include">
  <refnamediv>
   <refname>include</refname>
   <refpurpose>include a section of a external configfile</refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="global-includepath">
  <refnamediv>
   <refname>includepath</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="global-incremental">
  <refnamediv>
   <refname>incremental</refname>
   <refpurpose></refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   </literallayout>
  </refsect1>
 </refentry>
 <refentry id="global-loadplugin">
  <refnamediv>
   <refname>loadplugin</refname>
   <refpurpose>load a plugin</refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <literallayout>
   loadplugin = pluginname,[configsection]
   </literallayout>
   <para>
     pluginname is the name of the plugin like <computeroutput>input_clf,
     output_modlogan or processor_web</computeroutput>.
   </para>
   
   <para>
     The plugin is configured by the options specified by the options in the
     specified configsection. If the field `configsection' is omitted the
     pluginname is used as name of the configsection.
   </para>
   
   <programlisting>
   [global]
   loadplugin = input_clf
   loadplugin = processor_web, proc
   
   [input_clf]
   
   [proc]
   </programlisting>
   
   <para>
     the plugin `input_clf' is using the options specified in the section
     `[input_clf]', `processor_web' is using the options from `[proc]'.
   </para>
  </refsect1>
 </refentry>
 <refentry id="global-outputdir">
  <refnamediv>
   <refname>outputdir</refname>
   <refpurpose>directory where the generate files should be written to</refpurpose>
  </refnamediv>
  <refsect1>
   <title>Description</title>
   <para>
     The output directory is used to save multiple files:
     <itemizedlist>
       <listitem>
         <para>
           the regular output like the HTML files
         </para>
       </listitem>
       <listitem>
         <para>
           the statefiles
         </para>
       </listitem>
       <listitem>
         <para>
           some meta-info (modlogan.statefiles)
         </para>
       </listitem>
     </itemizedlist>
     If you are using the <xref linkend="processor-web-splitby"> rule the meaning of the outputdirectory
     changes a little bit.
   </para>
  </refsect1>
 </refentry>
</sect1>


</chapter>
</Book>
