next up previous contents index
Next: MZSTOR - initialize Up: Memory management Previous: MZEBRA - initialize

MZLOGL - change the MZ logging level

Various parts of the ZEBRA system write log messages to the standard system output, and occasionally also to the on-line terminal, if any. Examples of messages provided for are:

   a) messages for recoverable errors:
      read errors, data errors

   b) intialization messages for:
      stores, divisions, link areas, files

   c) termination messages giving statistics of usage of
      various facilities like memory, files

   d) operation messages:
      change in program phase, end-of-file

   e) watch messages for hopefully rare, expensive events:
      garbage collection, MZPUSH with relocation

   f) monitor messages to help the user debug his program

To control the amount of information thus provided to the user, a log level is defined and can be set and reset by the user at execution time. The default log level zero enables the messages which one would usually like to see for record in a production run. The user may reduce the log level to cut out most or all messages; he may increase the level to watch the running of his program, or even to debug his data or his input files.

Separate ZEBRA entities, such as dynamic stores or files, each have their own attached log level, which may be changed by the user at any time. By default they inherit the global system-wide default log-level set by MZEBRA, whose own default is zero.

A somewhat similar system has been used for the debugging of the ZEBRA system itself; the corresponding WRITE statements are still present in the code on the PAM files, although not on the object libraries, and could be activated after re-compilation by setting a special log level.

(The code for generating the logging messages is conditional and can be de-selected at generation time of the ZEBRA binary library. This is controlled by HIGZ conditionals:

   +USE, QPRINT, T=INH.  deselects all messages
   +USE, QDEBUG, T=INH.  deselects all messages at or above level 2
   +USE, QDEVZE.         selects the messages for debugging Zebra. )

The log level attached to a particular dynamic store is initialized by MZSTOR, normally to the global default log level. The user may change and re-change it at any time with:

CALL MZLOGL (IXSTOR,LOGL)

with

      IXSTOR  index of the store,
              zero for the primary store

        LOGL  the desired log level, as shown in the following
              table, which also shows which MZ routines print
              at this (or higher level):

     level  -3:  no log messages at all

            -2:  error messages        ZFATAL, ZPHASE

            -1:  terse logging         MZEBRA, MZSTOR, ZPHASE

             0:  normal logging        MZDIV, MZLINK

            +1:  log to watch          MZLINT, MZGARB, MZPUSH

            +2:  log to monitor calls to ZEBRA
                  MZLINT, MZWORK, MZBOOK, MZLIFT, MZDROP,
                  MZPUSH, MZREPL, MZGARB, MZLOGL

   ( Messages to debug the ZEBRA system itself:

      giving  LOGL = 100+n  sets the log-level to MIN(n,2)
                            and the debug print level to "n"

                   this is not normally available !          )


Janne Saarela
Mon May 15 08:34:47 METDST 1995