[Zope] how do you write to stupid log file?

Johan Carlsson johanc@easypublisher.com
Tue, 15 Jul 2003 10:49:00 +0200


Stefan H. Holek wrote:
> Try this:
> 
>   from zLOG import LOG, INFO
>   LOG('MyProduct', INFO, 'My message')
> 
> Zope must run in debug mode for messages to appear in the event log.

You can also import and use other severities. If I recall correctly
everything non-negative will always be written to the stupid log file?
(so INFO will always out put to SLF)

"""General logging facility

This module attempts to provide a simple programming API for logging
with a pluggable API for defining where log messages should go.

Programmers call the LOG function to log information.

The LOG function, in turn, calls the log_write method to actually write
logging information somewhere.  This module provides a very simple
log_write implementation.  It is intended that applications main
programs will replace this method with a method more suited to their needs.

The module provides a register_subsystem method that does nothing, but
provides a hook that logging management systems could use to collect 
information about subsystems being used.

The module defines several standard severities:

   TRACE=-300   -- Trace messages

   DEBUG=-200   -- Debugging messages

   BLATHER=-100 -- Somebody shut this app up.

   INFO=0       -- For things like startup and shutdown.

   PROBLEM=100  -- This isn't causing any immediate problems, but deserves
                   attention.

   WARNING=100  -- A wishy-washy alias for PROBLEM.

   ERROR=200    -- This is going to have adverse effects.

   PANIC=300    -- We're dead!

Also, looging facilities will normally ignore negative severities.

To plug in a log handler, simply replace the log_write function
with a callable object that takes 5 arguments:


       subsystem -- The subsystem generating the message (e.g. ZODB)

       severity -- The "severity" of the event.  This may be an integer or
                   a floating point number.  Logging back ends may
                   consider the int() of this valua to be significant.
                   For example, a backend may consider any severity
                   whos integer value is WARNING to be a warning.

       summary -- A short summary of the event

       detail -- A detailed description

       error -- A three-element tuple consisting of an error type, 
value, and
                traceback.  If provided, then a summary of the error
                is added to the detail.

The callable object can provide a reinitialize method that may be
called with no arguments to reopen the log files (if any) as part of a
log-rotation facility.

There is a default stupid logging facility that:

   - swallows logging information by default,

   - outputs to sys.stderr if the environment variable
     STUPID_LOG_FILE is set to an empty string, and

   - outputs to file if the environment variable
     STUPID_LOG_FILE is set to a file name.

   - Ignores errors that have a severity < 0 by default. This
     can be overridden with the environment variable STUPID_LOG_SEVERITY

"""




def LOG(subsystem, severity, summary, detail='',
	error=None, reraise=None):
  """Log some information

  The required arguments are:

   subsystem -- The subsystem generating the message (e.g. ZODB)

   severity -- The "severity" of the event.  This may be an integer or
               a floating point number.  Logging back ends may
               consider the int() of this valua to be significant.
               For example, a backend may consider any severity
               whos integer value is WARNING to be a warning.

   summary -- A short summary of the event

   detail -- A detailed description

   error -- A three-element tuple consisting of an error type, value, and
   	   traceback.  If provided, then a summary of the error
   	   is added to the detail.

   reraise -- If provided with a true value, then the error given by
   	   error is reraised.

  """

-- 
Johan Carlsson          Tel: + 46 8 31 24 94
Colliberty              Mob: + 46 70 558 25 24
Torsgatan 72            Email: johanc@easypublisher.com
SE-113 37 STOCKHOLM