[Zope-Checkins] CVS: ZODB3/zLOG - EventLogger.py:1.4.2.2

Fred L. Drake, Jr. fred@zope.com
Tue, 17 Dec 2002 18:53:05 -0500


Update of /cvs-repository/ZODB3/zLOG
In directory cvs.zope.org:/tmp/cvs-serv9964/zLOG

Modified Files:
      Tag: ZODB3-fast-restart-branch
	EventLogger.py 
Log Message:
Add a way to call on the stock configurability of the logging package.

=== ZODB3/zLOG/EventLogger.py 1.4.2.1 => 1.4.2.2 ===
--- ZODB3/zLOG/EventLogger.py:1.4.2.1	Tue Dec 17 14:32:40 2002
+++ ZODB3/zLOG/EventLogger.py	Tue Dec 17 18:53:05 2002
@@ -19,15 +19,18 @@
 
 __version__='$Revision$'[11:-2]
 
-import os, time
+import logging
+import os
+import time
+
 try:
     import textwrap
 except ImportError:
     textwrap = None
-import logging
+
 from BaseLogger import BaseLogger
 from LogHandlers import FileHandler, NullHandler, SysLogHandler
-from logging import StreamHandler, Formatter
+
 
 class EventLogger(BaseLogger):
     logger = logging.getLogger('event')
@@ -146,45 +149,51 @@
         dest = path
     return dest
 
+def get_env_logging_config():
+    # If ZLOG_CONFIG_FILE is set, use that as a configuration file.
+    return os.environ.get("ZLOG_CONFIG_FILE")
+
 formatters = {
-    'file':    Formatter(fmt='------\n%(asctime)s %(message)s',
-                         datefmt='%Y-%m-%dT%H:%M:%S'),
-    'syslog':  Formatter(fmt='%(message)s'),
+    'file':    logging.Formatter(fmt='------\n%(asctime)s %(message)s',
+                                 datefmt='%Y-%m-%dT%H:%M:%S'),
+    'syslog':  logging.Formatter(fmt='%(message)s'),
     }
 
 def initialize_from_environment():
     """ Reinitialize the event logger from the environment """
     # clear the current handlers from the event logger
-    event_logger.logger.handlers = []
+    del event_logger.logger.handlers[:]
 
-    handlers = []
+    # set up from logging config file
+    configfile = get_env_logging_config()
+    if configfile:
+        import logging.config
+        logging.config.fileConfig(configfile)
 
     # set up syslog handler if necessary
     facility, syslogdest = get_env_syslog_info()
     if syslogdest:
         handler = SysLogHandler(syslogdest, facility)
         handler.setFormatter(formatters['syslog'])
-        handlers.append(handler)
+        event_logger.logger.addHandler(handler)
 
     # set up file handler if necessary
     filedest = get_env_file_info()
     if filedest:
         handler = FileHandler(filedest)
         handler.setFormatter(formatters['file'])
-        handlers.append(handler)
+        event_logger.logger.addHandler(handler)
     elif filedest == '':
         # if dest is an empty string, log to standard error
-        handler = StreamHandler()
+        handler = logging.StreamHandler()
         handler.setFormatter(formatters['file'])
-        handlers.append(handler)
-    else:
+        event_logger.logger.addHandler(handler)
+
+    if not event_logger.logger.handlers:
         # log to nowhere, but install a 'null' handler in order to
         # prevent error messages from emanating due to a missing handler
-        handlers.append(NullHandler())
+        event_logger.logger.addHandler(NullHandler())
 
     severity = get_env_severity_info()
     severity = zlog_to_pep282_severity(severity)
     event_logger.logger.setLevel(severity)
-
-    for handler in handlers:
-        event_logger.logger.addHandler(handler)