<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->

<section xml:id="seaslog.configuration" xmlns="http://docbook.org/ns/docbook">
 &reftitle.runtime;
 &extension.runtime;
 <para>
  <table>
   <title>Seaslog &ConfigureOptions;</title>
   <tgroup cols="4">
    <thead>
     <row>
      <entry>&Name;</entry>
      <entry>&Default;</entry>
      <entry>&Changeable;</entry>
      <entry>&Changelog;</entry>
     </row>
    </thead>
    <tbody>
     <row>
      <entry><link linkend="ini.seaslog.appender">seaslog.appender</link></entry>
      <entry>1</entry>
      <entry>PHP_INI_SYSTEM</entry>
      <entry><!-- leave empty, this will be filled by an automatic script --></entry>
     </row>
     <row>
      <entry><link linkend="ini.seaslog.appender-retry">seaslog.appender_retry</link></entry>
      <entry>0</entry>
      <entry>PHP_INI_ALL</entry>
      <entry><!-- leave empty, this will be filled by an automatic script --></entry>
     </row>
     <row>
      <entry><link linkend="ini.seaslog.level">seaslog.level</link></entry>
      <entry>8</entry>
      <entry>PHP_INI_ALL</entry>
      <entry><!-- leave empty, this will be filled by an automatic script --></entry>
     </row>
     <row>
      <entry><link linkend="ini.seaslog.remote-host">seaslog.remote_host</link></entry>
      <entry>127.0.0.1</entry>
      <entry>PHP_INI_ALL</entry>
      <entry><!-- leave empty, this will be filled by an automatic script --></entry>
     </row>
     <row>
      <entry><link linkend="ini.seaslog.remote-port">seaslog.remote_port</link></entry>
      <entry>514</entry>
      <entry>PHP_INI_ALL</entry>
      <entry><!-- leave empty, this will be filled by an automatic script --></entry>
     </row>
     <row>
      <entry><link linkend="ini.seaslog.remote-timeout">seaslog.remote_timeout</link></entry>
      <entry>1</entry>
      <entry>PHP_INI_SYSTEM</entry>
      <entry><!-- leave empty, this will be filled by an automatic script --></entry>
     </row>        
     <row>
      <entry><link linkend="ini.seaslog.default-basepath">seaslog.default_basepath</link></entry>
      <entry>/var/log/www</entry>
      <entry>PHP_INI_SYSTEM</entry>
      <entry><!-- leave empty, this will be filled by an automatic script --></entry>
     </row>
     <row>
      <entry><link linkend="ini.seaslog.default-logger">seaslog.default_logger</link></entry>
      <entry>default</entry>
      <entry>PHP_INI_SYSTEM</entry>
      <entry><!-- leave empty, this will be filled by an automatic script --></entry>
     </row>
     <row>
      <entry><link linkend="ini.seaslog.default-template">seaslog.default_template</link></entry>
      <entry>%T | %L | %P | %Q | %t | %M</entry>
      <entry>PHP_INI_SYSTEM</entry>
      <entry><!-- leave empty, this will be filled by an automatic script --></entry>
     </row>
     <row>
      <entry><link linkend="ini.seaslog.default-datetime-format">seaslog.default_datetime_format</link></entry>
      <entry>Y-m-d H:i:s</entry>
      <entry>PHP_INI_SYSTEM</entry>
      <entry><!-- leave empty, this will be filled by an automatic script --></entry>
     </row>
     <row>
      <entry><link linkend="ini.seaslog.trace-error">seaslog.trace_error</link></entry>
      <entry>1</entry>
      <entry>PHP_INI_ALL</entry>
      <entry><!-- leave empty, this will be filled by an automatic script --></entry>
     </row>
     <row>
      <entry><link linkend="ini.seaslog.trace-exception">seaslog.trace_exception</link></entry>
      <entry>0</entry>
      <entry>PHP_INI_SYSTEM</entry>
      <entry><!-- leave empty, this will be filled by an automatic script --></entry>
     </row>
     <row>
      <entry><link linkend="ini.seaslog.trace-notice">seaslog.trace_notice</link></entry>
      <entry>0</entry>
      <entry>PHP_INI_ALL</entry>
      <entry><!-- leave empty, this will be filled by an automatic script --></entry>
     </row>
     <row>
      <entry><link linkend="ini.seaslog.trace-warning">seaslog.trace_warning</link></entry>
      <entry>0</entry>
      <entry>PHP_INI_ALL</entry>
      <entry><!-- leave empty, this will be filled by an automatic script --></entry>
     </row>
     <row>
      <entry><link linkend="ini.seaslog.use-buffer">seaslog.use_buffer</link></entry>
      <entry>0</entry>
      <entry>PHP_INI_SYSTEM</entry>
      <entry><!-- leave empty, this will be filled by an automatic script --></entry>
     </row>
     <row>
      <entry><link linkend="ini.seaslog.buffer-size">seaslog.buffer_size</link></entry>
      <entry>0</entry>
      <entry>PHP_INI_ALL</entry>
      <entry><!-- leave empty, this will be filled by an automatic script --></entry>
     </row>
     <row>
      <entry><link linkend="ini.seaslog.buffer-disabled-in-cli">seaslog.buffer_disabled_in_cli</link></entry>
      <entry>0</entry>
      <entry>PHP_INI_SYSTEM</entry>
      <entry><!-- leave empty, this will be filled by an automatic script --></entry>
     </row>
     <row>
      <entry><link linkend="ini.seaslog.disting-type">seaslog.disting_type</link></entry>
      <entry>0</entry>
      <entry>PHP_INI_SYSTEM</entry>
      <entry><!-- leave empty, this will be filled by an automatic script --></entry>
     </row>
     <row>
      <entry><link linkend="ini.seaslog.disting-folder">seaslog.disting_folder</link></entry>
      <entry>1</entry>
      <entry>PHP_INI_SYSTEM</entry>
      <entry><!-- leave empty, this will be filled by an automatic script --></entry>
     </row>
     <row>
      <entry><link linkend="ini.seaslog.disting-by-hour">seaslog.disting_by_hour</link></entry>
      <entry>0</entry>
      <entry>PHP_INI_SYSTEM</entry>
      <entry><!-- leave empty, this will be filled by an automatic script --></entry>
     </row>
     <row>
      <entry><link linkend="ini.seaslog.recall-depth">seaslog.recall_depth</link></entry>
      <entry>0</entry>
      <entry>PHP_INI_ALL</entry>
      <entry><!-- leave empty, this will be filled by an automatic script --></entry>
     </row>
     <row>
      <entry><link linkend="ini.seaslog.trim-wrap">seaslog.trim_wrap</link></entry>
      <entry>0</entry>
      <entry>PHP_INI_ALL</entry>
      <entry><!-- leave empty, this will be filled by an automatic script --></entry>
     </row>
     <row>
      <entry><link linkend="ini.seaslog.ignore-warning">seaslog.ignore_warning</link></entry>
      <entry>1</entry>
      <entry>PHP_INI_ALL</entry>
      <entry><!-- leave empty, this will be filled by an automatic script --></entry>
     </row>
     <row>
      <entry><link linkend="ini.seaslog.throw-exception">seaslog.throw_exception</link></entry>
      <entry>1</entry>
      <entry>PHP_INI_ALL</entry>
      <entry><!-- leave empty, this will be filled by an automatic script --></entry>
     </row>
    </tbody>
   </tgroup>
  </table>
 </para>

 &ini.descriptions.title;

 <para>
  <variablelist>
   <varlistentry xml:id="ini.seaslog.appender">
     <term>
      <parameter>seaslog.appender</parameter>
      <type>int</type>
     </term>
     <listitem>
      <para>
       Switch the Record Log Data Store. 1File 2TCP 3UDP (Switch default 1)
      </para>
      <para>
        SeasLog will send log to  tcp://remote_host:remote_port or udp://remote_host:remote_port server, 
       when <emphasis>seaslog.appender</emphasis> configured to <literal>2 (TCP)</literal> or <literal>3 (UDP)</literal>.
      </para>
      <para>
        When <emphasis>SeasLog</emphasis> send log to TCP/UDP，style follow RFC5424.
       The <literal>{logInfo}</literal> affected by  <emphasis>seaslog.default_template</emphasis>.
      </para>
      <screen>
    <![CDATA[
The log style finally formatted such as:
<15>1 2017-08-27T01:24:59+08:00 vagrant-ubuntu-trusty test/logger[27171]: 2016-06-25 00:59:43 | DEBUG | 21423 | 599157af4e937 | 1466787583.322 | this is a neeke debug
<14>1 2017-08-27T01:24:59+08:00 vagrant-ubuntu-trusty test/logger[27171]: 2016-06-25 00:59:43 | INFO | 21423 | 599157af4e937 | 1466787583.323 | this is a info log
<13>1 2017-08-27T01:24:59+08:00 vagrant-ubuntu-trusty test/logger[27171]: 2016-06-25 00:59:43 | NOTICE | 21423 | 599157af4e937 | 1466787583.324 | this is a notice log
    ]]>
      </screen>
     </listitem>
    </varlistentry>
    <varlistentry xml:id="ini.seaslog.appender-retry">
     <term>
      <parameter>seaslog.appender_retry</parameter>
      <type>int</type>
     </term>
     <listitem>
      <para>
       Record Log Retry Count.
       Default 0 (Do Not Retry)
      </para>
     </listitem>
    </varlistentry>
    <varlistentry xml:id="ini.seaslog.buffer-disabled-in-cli">
     <term>
      <parameter>seaslog.buffer_disabled_in_cli</parameter>
      <type>int</type>
     </term>
     <listitem>
      <para>
       Disable buffer in cli. 1-Y 0-N(Default)
      </para>
      <para>
       Switch the configure buffer_disabled_in_cli on. 
       The buffer_disabled_in_cli switch default off. 
       If switch buffer_disabled_in_cli on, and running in cli, 
       seaslog.use_buffer setting will be discarded, 
       Seaslog write to the Data Store IMMEDIATELY.
      </para>
     </listitem>
    </varlistentry>
    <varlistentry xml:id="ini.seaslog.buffer-size">
     <term>
      <parameter>seaslog.buffer_size</parameter>
      <type>int</type>
     </term>
     <listitem>
      <para>
       Configure the buffer_size with 100. 
       The buffer_size default 0, it’s meaning don’t use buffer. 
       If buffer_size > 0,SeasLog will rewritten down into the Data Store 
       when the prerecorded log in memory count >= this buffer_size,and then refresh the memory poll.
      </para>
     </listitem>
    </varlistentry>
    <varlistentry xml:id="ini.seaslog.default-basepath">
     <term>
      <parameter>seaslog.default_basepath</parameter>
      <type>string</type>
     </term>
     <listitem>
      <para>
       Default Log Base Path. Defult "/var/log/www".
      </para>
     </listitem>
    </varlistentry>
    <varlistentry xml:id="ini.seaslog.default-datetime-format">
     <term>
      <parameter>seaslog.default_datetime_format</parameter>
      <type>string</type>
     </term>
     <listitem>
      <para>
       The DateTime Style.  Default "Y-m-d H:i:s".
      </para>
     </listitem>
    </varlistentry>
    <varlistentry xml:id="ini.seaslog.default-logger">
     <term>
      <parameter>seaslog.default_logger</parameter>
      <type>string</type>
     </term>
     <listitem>
      <para>
       Default Logger Path. Default "default".
      </para>
     </listitem>
    </varlistentry>
    <varlistentry xml:id="ini.seaslog.disting-by-hour">
     <term>
      <parameter>seaslog.disting_by_hour</parameter>
      <type>int</type>
     </term>
     <listitem>
      <para>
       Switch use the logger with hour. 1-Y 0-N(Default)
      </para>
      <note>
        <para>
        <emphasis>seaslog.disting_by_hour = 1</emphasis> Switch use Logger DisTing by hour. 
        It’s  meaning SeasLog will create the file each one hour.
        </para>
      </note>
     </listitem>
    </varlistentry>
    <varlistentry xml:id="ini.seaslog.disting-folder">
     <term>
      <parameter>seaslog.disting_folder</parameter>
      <type>int</type>
     </term>
     <listitem>
      <para>
       Switch use the logger with folder. 1-Y(Default) 0-N
      </para>
      <note>
        <para>
        <emphasis>seaslog.disting_folder = 1</emphasis> Switch use Logger DisTing by folder, 
        it’s meaning SeasLog will create the file deistic by folder, 
        and when this configure close SeasLog will create file 
        use underline connect Logger and Time like default_20180211.log.
        </para>
      </note>
     </listitem>
    </varlistentry>
    <varlistentry xml:id="ini.seaslog.disting-type">
     <term>
      <parameter>seaslog.disting_type</parameter>
      <type>int</type>
     </term>
     <listitem>
      <para>
       Switch use the logger with type. 1-Y 0-N(Default)
      </para>
      <note>
        <para>
        <emphasis>seaslog.disting_type = 1</emphasis> Switch use Logger DisTing by type, 
        it’s meaning SeasLog will create the file deistic info\warn\error and the other type.
        </para>
      </note>
     </listitem>
    </varlistentry>
    <varlistentry xml:id="ini.seaslog.ignore-warning">
     <term>
      <parameter>seaslog.ignore_warning</parameter>
      <type>int</type>
     </term>
     <listitem>
      <para>
       Switch ignore SeasLog warning. 1-On(Default) 0-Off
      </para>
      <note>
        <para>
        <emphasis>seaslog.ignore_warning = 1</emphasis> Open a warning to ignore SeasLog itself. 
        When directory permissions or receive server ports are blocked, they are ignored; 
        when closed, a warning is thrown.
        </para>
      </note>
     </listitem>
    </varlistentry>
    <varlistentry xml:id="ini.seaslog.level">
     <term>
      <parameter>seaslog.level</parameter>
      <type>int</type>
     </term>
     <listitem>
      <para>
       Record logger level. Default 8 (All of them).
       0-EMERGENCY 1-ALERT 2-CRITICAL 3-ERROR 4-WARNING 5-NOTICE 6-INFO 7-DEBUG 8-ALL
      </para>
      <note>
        <para>
          Tips: The configuration item has changed since the 1.7.0 version.
          Before the 1.7.0 version, the smaller the value, the more logs are taken according to the level: 
          0-all 1-debug 2-info 3-notice 4-warning 5-error 6-critical 7-alert 8-emergency
          Before the 1.7.0 version, Default 0 (All of them).
        </para>
      </note>
     </listitem>
    </varlistentry>
    <varlistentry xml:id="ini.seaslog.recall-depth">
     <term>
      <parameter>seaslog.recall_depth</parameter>
      <type>int</type>
     </term>
     <listitem>
      <para>
       Log function recall depth.Will affected variable <literal>LineNo</literal> in <literal>%F</literal>.
       Default 0
      </para>
     </listitem>
    </varlistentry>
    <varlistentry xml:id="ini.seaslog.remote-host">
     <term>
      <parameter>seaslog.remote_host</parameter>
      <type>string</type>
     </term>
     <listitem>
      <para>
       If you use  Record TCP or UDP, configure this remote ip. Default "127.0.0.1"
      </para>
     </listitem>
    </varlistentry>
    <varlistentry xml:id="ini.seaslog.remote-port">
     <term>
      <parameter>seaslog.remote_port</parameter>
      <type>int</type>
     </term>
     <listitem>
      <para>
       If you use Record TCP or UDP, configure this remote port. Default 514
      </para>
     </listitem>
    </varlistentry>
    <varlistentry xml:id="ini.seaslog.remote-timeout">
     <term>
      <parameter>seaslog.remote_timeout</parameter>
      <type>int</type>
     </term>
     <listitem>
      <para>
       If you use Record TCP or UDP, configure this remote timeout. Default 1 second
      </para>
     </listitem>
    </varlistentry>
    <varlistentry xml:id="ini.seaslog.throw-exception">
     <term>
      <parameter>seaslog.throw_exception</parameter>
      <type>int</type>
     </term>
     <listitem>
      <para>
       Switch throw SeasLog exception. 1-On(Default) 0-Off
      </para>
      <note>
        <para>
        <emphasis>seaslog.throw_exception = 1</emphasis> Open an exception that throws the SeasLog to throw itself. 
        When the directory authority or the receive server port is blocked, 
        throw an exception; do not throw an exception when closed.
        </para>
      </note>
     </listitem>
    </varlistentry>
    <varlistentry xml:id="ini.seaslog.trace-error">
     <term>
      <parameter>seaslog.trace_error</parameter>
      <type>int</type>
     </term>
     <listitem>
      <para>
       Automatic Record final error with default logger. 1-Y(Default) 0-N
      </para>
     </listitem>
    </varlistentry>
    <varlistentry xml:id="ini.seaslog.trace-exception">
     <term>
      <parameter>seaslog.trace_exception</parameter>
      <type>int</type>
     </term>
     <listitem>
      <para>
       Automatic Record exception with default logger. 1-Y 0-N(Default)
      </para>
     </listitem>
    </varlistentry>
    <varlistentry xml:id="ini.seaslog.trace-notice">
     <term>
      <parameter>seaslog.trace_notice</parameter>
      <type>int</type>
     </term>
     <listitem>
      <para>
       Automatic Record notice with default logger. 1-Y 0-N(Default)
      </para>
     </listitem>
    </varlistentry>
    <varlistentry xml:id="ini.seaslog.trace-warning">
     <term>
      <parameter>seaslog.trace_warning</parameter>
      <type>int</type>
     </term>
     <listitem>
      <para>
       Automatic Record warning with default logger. 1-Y 0-N(Default)
      </para>
     </listitem>
    </varlistentry>
    <varlistentry xml:id="ini.seaslog.trim-wrap">
     <term>
      <parameter>seaslog.trim_wrap</parameter>
      <type>int</type>
     </term>
     <listitem>
      <para>
       Trim the \n and \r in log message. 1-On 0-Off(Default)
      </para>
     </listitem>
    </varlistentry>
    <varlistentry xml:id="ini.seaslog.use-buffer">
     <term>
      <parameter>seaslog.use_buffer</parameter>
      <type>int</type>
     </term>
     <listitem>
      <para>
       Switch use the log buffer with memory. 1-Y 0-N(Default)
      </para>
      <note>
        <para>
        <emphasis>seaslog.use_buffer = 1</emphasis> Switch the configure use_buffer on. 
        The use_buffer switch default off. 
        If switch use_buffer on, SeasLog prerecord the log with memory, 
        and them would be rewritten down into the Data Store by request shutdown 
        or php process exit (PHP RSHUTDOWN or PHP MSHUTDOWN).
        </para>
      </note>
     </listitem>
    </varlistentry>
    <varlistentry xml:id="ini.seaslog.default-template">
     <term>
      <parameter>seaslog.default_template</parameter>
      <type>string</type>
     </term>
     <listitem>
      <para>
       Default Log template. 
       Default "%T | %L | %P | %Q | %t | %M".
      </para>
      <note>
        <para>
        The following default variables are provided, 
        which can be used directly in the log template and replaced as a corresponding value 
        when the log is eventually generated.
        </para>
        <para>
        Default log template is: <literal>seaslog.default_template = "%T | %L | %P | %Q | %t | %M"</literal>,
        that's mean,default log style is: <literal>{dateTime} | {level} | {pid} | {uniqid} | {timeStamp} | {logInfo}</literal>
        </para>
        <para>
         If you custom log template, such as: <literal>seaslog.default_template = "[%T]:%L %P %Q %t %M"</literal>,
         that's will mean,log style was custom as: <literal>[{dateTime}]:{level} {pid} {uniqid} {timeStamp} {logInfo}</literal>
        </para>
        <table>
          <title>Seaslog Default Variable Table</title>
          <tgroup cols="2">
            <thead>
              <row>
                <entry>Variable Name</entry>
                <entry>Description</entry>
              </row>
            </thead>
            <tbody>
              <row>
                <entry>%L</entry>
                <entry>Level.</entry>
              </row>
              <row>
                <entry>%M</entry>
                <entry>Message.</entry>
              </row>
              <row>
                <entry>%T</entry>
               <entry>DateTime. Such as <literal>2017-08-16 19:15:02</literal>, affected by <literal>seaslog.default_datetime_format</literal>.</entry>
              </row>
              <row>
                <entry>%t</entry>
               <entry>Timestamp. Such as <literal>1502882102.862</literal>,accurate to milliseconds.</entry>
              </row>
              <row>
                <entry>%Q</entry>
                <entry>RequestId. To distinguish a single request, 
                 such as not invoking the <literal>SeasLog::setRequestId($string)</literal> function,
                 the unique value generated by the built-in <literal>static char *get_uniqid ()</literal> 
                function is used when the request is initialized.</entry>
              </row>
              <row>
                <entry>%H</entry>
                <entry>HostName.</entry>
              </row>
              <row>
                <entry>%P</entry>
                <entry>ProcessId.</entry>
              </row>
              <row>
                <entry>%D</entry>
               <entry>Domain:Port. Such as <literal>www.cloudwise.com:80</literal>; When Cli, Such as <literal>cli</literal>.</entry>
              </row>
              <row>
                <entry>%R</entry>
               <entry>Request URI. Such as <literal>/app/user/signin</literal>; 
                When Cli it's the index script, Such as <literal>CliIndex.php</literal>.</entry>
              </row>
              <row>
                <entry>%m</entry>
               <entry>Request Method. Such as <literal>Get</literal>; When Cli it's the command script, Such as <literal>/bin/bash</literal>.</entry>
              </row>
              <row>
                <entry>%I</entry>
               <entry>Client IP; When Cli it's <literal>local</literal>. 
                Priority value: HTTP_X_REAL_IP > HTTP_X_FORWARDED_FOR > REMOTE_ADDR</entry>
              </row>
              <row>
                <entry>%F</entry>
               <entry>FileName:LineNo. Such as <literal>UserService.php:118</literal>.</entry>
              </row>
              <row>
                <entry>%U</entry>
               <entry>MemoryUsage. byte. Call <literal>zend_memory_usage</literal>.</entry>
              </row>
              <row>
                <entry>%u</entry>
               <entry>PeakMemoryUsage. byte. Call <literal>zend_memory_peak_usage</literal>.</entry>
              </row>
              <row>
                <entry>%C</entry>
               <entry><literal>TODO</literal> Class::Action. Such as <literal>UserService::getUserInfo</literal></entry>
              </row>
            </tbody>
            </tgroup>
        </table>
      </note>
     </listitem>
    </varlistentry>
  </variablelist>
 </para>
</section>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
