<?xml version="1.0" encoding="UTF-8"?>
<fpdoc-descriptions>
  <package name="LazUtils">
    <module name="LazLogger">
      <element name="DbgOut">
        <short>Write message to log</short>
        <descr>
          <p>Writes the text to the log. Does not append a new line.
</p>
          <p>The Argument can be:</p>
          <p>One or more string</p>
          <p>An open array of const: All values are converted to string and joined</p>
          <p>A single string and open array of const:  Will be passed to Format</p>
          <p>Any of the above with a PLazLoggerLogGroup as filter</p>
          <p>This is a forwarder to the log TLazLogger object. See there for details.</p>
        </descr>
        <seealso>
          <link id="#LazUtils.lazlogger.DebugLogger">DebugLogger</link>
        </seealso>
      </element>
      <element name="DebugLn">
        <short>Write message to log</short>
        <descr>
          <p>Writes the text to the log. Does append a new line.
</p>
          <p>The Argument can be:</p>
          <p>One or more string</p>
          <p>An open array of const: All values are converted to string and joined</p>
          <p>A single string and open array of const:  Will be passed to Format</p>
          <p>Any of the above with a PLazLoggerLogGroup as filter</p>
          <p>This is a forwarder to the log TLazLogger object. See there for details.</p>
        </descr>
        <seealso>
          <link id="#LazUtils.lazlogger.DebugLogger">DebugLogger</link>
        </seealso>
      </element>
      <element name="DebugLnEnter">
        <short>Write message to log</short>
        <descr>
          <p>Writes the text to the log. Does append a new line. Increases the current intend.
</p>
          <p>The Argument can be:</p>
          <p>One or more string</p>
          <p>An open array of const: All values are converted to string and joined</p>
          <p>A single string and open array of const:  Will be passed to Format</p>
          <p>Any of the above with a PLazLoggerLogGroup as filter</p>
          <p>This is a forwarder to the log TLazLogger object. See there for details.</p>
        </descr>
        <seealso>
          <link id="#LazUtils.lazlogger.DebugLogger">DebugLogger</link>
        </seealso>
      </element>
      <element name="DebugLnExit">
        <short>Write message to log</short>
        <descr>
          <p>Writes the text to the log. Does append a new line. Increases the current intend.
</p>
          <p>The Argument can be:</p>
          <p>One or more string</p>
          <p>An open array of const: All values are converted to string and joined</p>
          <p>A single string and open array of const:  Will be passed to Format</p>
          <p>Any of the above with a PLazLoggerLogGroup as filter</p>
          <p>This is a forwarder to the log TLazLogger object. See there for details.</p>
        </descr>
        <seealso>
          <link id="#LazUtils.lazlogger.DebugLogger">DebugLogger</link>
        </seealso>
      </element>
      <element name="TLazLogger">
        <short>A log writer object</short>
        <descr>
          <p>Provides functionality to write messages to a log file. Allows filtering and changing indent level. 
</p>
          <p>Can parse options from command line for log filename and filter settings.
</p>
          <p>An application can subclass the logger to add it's own functionality
</p>
        </descr>
      </element>
      <element name="TLazLogger.LogName">
        <short>The name of the log file</short>
        <descr>This can be set by the application.

Alternatively it can be determined according to ParamForLogFileName and EnvironmentForLogFileName</descr>
      </element>
      <element name="TLazLogger.ParamForLogFileName">
        <short>Name of the command line option, that has the logfile's name</short>
        <descr>If LogName is empty and this is set, then the commandline will be checked for a param of the name specified. LogName  will be set, if found.

The default is --debug-log=
Note that the dashes and equal sign must be present.</descr>
      </element>
      <element name="TLazLogger.DbgOut">
        <short>Write message to log</short>
        <descr>
          <p>Writes the text to the log. Does not append a new line.
</p>
          <p>The Argument can be:</p>
          <p>One or more string</p>
          <p>An open array of const: All values are converted to string and joined</p>
          <p>A single string and open array of const:  Will be passed to Format</p>
          <p>Any of the above with a PLazLoggerLogGroup as filter</p>
        </descr>
        <seealso>
          <link id="#LazUtils.lazlogger.DebugLogger">DebugLogger</link>
        </seealso>
      </element>
      <element name="TLazLogger.DebugLn">
        <short>Write message to log</short>
        <descr>
          <p>Writes the text to the log. Does append a new line.
</p>
          <p>The Argument can be:</p>
          <p>One or more string</p>
          <p>An open array of const: All values are converted to string and joined</p>
          <p>A single string and open array of const:  Will be passed to Format</p>
          <p>Any of the above with a PLazLoggerLogGroup as filter</p>
        </descr>
        <seealso>
          <link id="#LazUtils.lazlogger.DebugLogger">DebugLogger</link>
        </seealso>
      </element>
      <element name="TLazLogger.DebugLnEnter">
        <short>Write message to log</short>
        <descr>
          <p>Writes the text to the log. Does append a new line. Increases the current intend.
</p>
          <p>The Argument can be:</p>
          <p>One or more string</p>
          <p>An open array of const: All values are converted to string and joined</p>
          <p>A single string and open array of const:  Will be passed to Format</p>
          <p>Any of the above with a PLazLoggerLogGroup as filter</p>
        </descr>
        <seealso>
          <link id="#LazUtils.lazlogger.DebugLogger">DebugLogger</link>
        </seealso>
      </element>
      <element name="TLazLogger.DebugLnExit">
        <short>Write message to log</short>
        <descr>
          <p>Writes the text to the log. Does append a new line. Increases the current intend.
</p>
          <p>The Argument can be:</p>
          <p>One or more string</p>
          <p>An open array of const: All values are converted to string and joined</p>
          <p>A single string and open array of const:  Will be passed to Format</p>
          <p>Any of the above with a PLazLoggerLogGroup as filter</p>
        </descr>
        <seealso>
          <link id="#LazUtils.lazlogger.DebugLogger">DebugLogger</link>
        </seealso>
      </element>
      <element name="TLazLoggerLogGroupList"/>
      <element name="TLazLogger.EnvironmentForLogFileName">
        <short>Name of the environment, that has the logfile's name</short>
        <descr>If LogName is empty and con not be found from ParamForLogFileName, then the environment variable specified will be checked.
 LogName  will be set, if found.

* will be replaced by param(0)

The default is: *_debuglog
</descr>
      </element>
      <element name="TLazLogger.UseStdOut">
        <short>Enable writing to STDOUT, if LogName is not set</short>
      </element>
      <element name="TLazLogger.CloseLogFileBetweenWrites">
        <short>Enable opening and closing the log for each write</short>
      </element>
      <element name="TLazLogger.OnDebugLn">
        <short>Event when writing a full line (Debugln, DebuglnEnter or DebuglnExit)</short>
        <descr>The event contains the text to be logged.
It also has a handled var param, that can be set to True to prevent default action (writing to log)</descr>
      </element>
      <element name="TLazLogger.OnDbgOut">
        <short>Event when writing without line end (DbgOut)</short>
        <descr>The event contains the text to be logged.
It also has a handled var param, that can be set to True to prevent default action (writing to log)</descr>
      </element>
      <element name="TLazLogger.NestLvlIndent">
        <short>Indent to be added for each DebuglnEnter</short>
        <descr>Default is 2</descr>
      </element>
      <element name="TLazLogger.MaxNestPrefixLen">
        <short>Maxmum indent for DebuglnEnter</short>
        <descr>If the indent reaches this value, it will not increase anymore. Instead each line is prefixed with the nest-level of DebuglnEnter

Default is 15</descr>
      </element>
      <element name="TLazLogger.RegisterLogGroup">
        <short>Register a named filter </short>
        <descr>var
   MyFilter: PLazLoggerLogGroup;

initialization
  MyFilter := DebugLogger.RegisterLogGroup('MyFilterName');

then write 
  debugln(MyFilter, ['Notice: ', SomeText]);


The filter can be enabled via the command line. See ParamForEnabledLogGroups</descr>
      </element>
      <element name="TLazLogger.ParamForEnabledLogGroups">
        <short>Name of the command line option, to enable or disable LogGroups</short>
      </element>
      <element name="TLazLogger.LogGroupList">
        <short>List of all LogGroups</short>
      </element>
      <short>Provides a log framework</short>
      <descr>LazLogger provides logging facilities to write message to a file. 
Messages can be logged plain, or enclosed in begin/end like blocks, adding indent to all messages between to points (blocks can be nested).
It also has the ability to filter groups of messages.

It can reads the command line and environment to find the desired filename. By default it looks for --debug-log= on the command line or "appname"_debuglog in environment.

If no log name is found StdOut is used.

The simples usage, is to use the unit and put "DebugLn"/ "DbgOut" / "DebugLnEnter"/ "DebugLnExit" in your code. This works without any further setup.</descr>
    </module>
  </package>
</fpdoc-descriptions>
