[Checkins] SVN: Sandbox/J1m/resumelb/src/zc/resumelb/zk. Added support for basic lb logging config.

Jim Fulton jim at zope.com
Mon Mar 5 13:40:51 UTC 2012


Log message for revision 124511:
  Added support for basic lb logging config.
  

Changed:
  U   Sandbox/J1m/resumelb/src/zc/resumelb/zk.py
  U   Sandbox/J1m/resumelb/src/zc/resumelb/zk.test

-=-
Modified: Sandbox/J1m/resumelb/src/zc/resumelb/zk.py
===================================================================
--- Sandbox/J1m/resumelb/src/zc/resumelb/zk.py	2012-03-05 13:20:38 UTC (rev 124510)
+++ Sandbox/J1m/resumelb/src/zc/resumelb/zk.py	2012-03-05 13:40:49 UTC (rev 124511)
@@ -132,11 +132,16 @@
 
     # XXX default to basic config?
     if options.logger_configuration:
-        import ZConfig
-        with open(options.logger_configuration) as f:
-            ZConfig.configureLoggers(f.read())
+        logger_config = options.logger_configuration
+        if re.match(r'\d+$', logger_config):
+            logging.basicConfig(level=int(logger_config))
+        elif logger_config in ('CRITICAL', 'ERROR', 'WARNING', 'INFO', 'DEBUG'):
+            logging.basicConfig(level=getattr(logging, logger_config))
+        else:
+            import ZConfig
+            with open(logger_config) as f:
+                ZConfig.configureLoggers(f.read())
 
-
     zk = zc.zk.ZooKeeper(zookeeper)
     addrs = zk.children(path+'/workers/providers')
     rcmod, rcexpr = options.request_classifier.split(':')

Modified: Sandbox/J1m/resumelb/src/zc/resumelb/zk.test
===================================================================
--- Sandbox/J1m/resumelb/src/zc/resumelb/zk.test	2012-03-05 13:20:38 UTC (rev 124510)
+++ Sandbox/J1m/resumelb/src/zc/resumelb/zk.test	2012-03-05 13:40:49 UTC (rev 124511)
@@ -337,11 +337,12 @@
 
 Finally, let's test that:
 
-- The server runs in non-test mode and that
+- The server runs in non-test mode, that
 
-- We can pass an object as the access log parameter.
-  (Used by simulation script.)
+- we can pass an object as the access log parameter (used by
+  simulation script.), and that we can pass basoc logging information:
 
+
     >>> worker_greenlet = gevent.spawn(zc.resumelb.zk.worker,
     ...     app, None,
     ...     zookeeper='zookeeper.example.com:2181', path='/test/lb/workers',
@@ -350,10 +351,14 @@
     >>> import StringIO
     >>> accesslog = StringIO.StringIO()
 
-    >>> lb_greenlet = gevent.spawn(zc.resumelb.zk.lbmain, [
-    ...     '-a127.0.0.1:0',
-    ...     '-l', accesslog, 'zookeeper.example.com:2181', '/test/lb'])
-    >>> gevent.sleep(.1)
+    >>> with mock.patch('ZConfig.configureLoggers') as configureLoggers:
+    ...   with mock.patch('logging.basicConfig') as basicConfig:
+    ...     lb_greenlet = gevent.spawn(zc.resumelb.zk.lbmain, [
+    ...       '-a127.0.0.1:0', '--logger-configuration', 'INFO',
+    ...       '-l', accesslog, 'zookeeper.example.com:2181', '/test/lb'])
+    ...     gevent.sleep(.1)
+    ...     if configureLoggers.called: print 'configureLoggers'
+    ...     basicConfig.assert_called_with(level=20)
 
     >>> [addr] = map(zc.parse_addr.parse_addr,
     ...              zk.get_children('/test/lb/providers'))
@@ -368,3 +373,20 @@
 
     >>> print accesslog.getvalue(),
     127.0.0.1 - - [2012-01-31 07:46:31] "GET /hi.html HTTP/1.0" 200 226 0.001165
+
+    >>> server.stop()
+    >>> lb.stop()
+
+Try a numeric log level:
+
+    >>> with mock.patch('ZConfig.configureLoggers') as configureLoggers:
+    ...   with mock.patch('logging.basicConfig') as basicConfig:
+    ...     lb_greenlet = gevent.spawn(zc.resumelb.zk.lbmain, [
+    ...       '-a127.0.0.1:0', '--logger-configuration', '42',
+    ...       '-l', accesslog, 'zookeeper.example.com:2181', '/test/lb'])
+    ...     gevent.sleep(.1)
+    ...     if configureLoggers.called: print 'configureLoggers'
+    ...     basicConfig.assert_called_with(level=42)
+
+    >>> server.stop()
+    >>> lb.stop()



More information about the checkins mailing list