[CalendarServer-changes] [2339] CalendarServer/branches/users/wsanchez/logging/twistedcaldav

source_changes at macosforge.org source_changes at macosforge.org
Wed Apr 23 17:11:50 PDT 2008


Revision: 2339
          http://trac.macosforge.org/projects/calendarserver/changeset/2339
Author:   wsanchez at apple.com
Date:     2008-04-23 17:11:49 -0700 (Wed, 23 Apr 2008)

Log Message:
-----------
Add code to set and get log levels.

Modified Paths:
--------------
    CalendarServer/branches/users/wsanchez/logging/twistedcaldav/log.py
    CalendarServer/branches/users/wsanchez/logging/twistedcaldav/test/test_log.py

Modified: CalendarServer/branches/users/wsanchez/logging/twistedcaldav/log.py
===================================================================
--- CalendarServer/branches/users/wsanchez/logging/twistedcaldav/log.py	2008-04-23 23:46:01 UTC (rev 2338)
+++ CalendarServer/branches/users/wsanchez/logging/twistedcaldav/log.py	2008-04-24 00:11:49 UTC (rev 2339)
@@ -35,6 +35,9 @@
 
 __all__ = [
     "logLevels",
+    "logLevelForNamespace",
+    "setLogLevelForNamespace",
+    "clearLogLevels",
     "Logger",
     "LoggingMixIn",
 ]
@@ -52,6 +55,40 @@
 
 logLevelIndexes = dict(zip(logLevels, xrange(0, len(logLevels))))
 
+##
+# Tools for manageing log levels
+##
+
+defaultLogLevel = "info"
+
+logLevelsByNamespace = {}
+
+def logLevelForNamespace(namespace):
+    if namespace in logLevelsByNamespace:
+        return logLevelsByNamespace[namespace]
+
+    segments = namespace.split(".")
+    index = len(segments) - 1
+
+    while index > 0:
+        namespace = ".".join(segments[:index])
+        if namespace in logLevelsByNamespace:
+            return logLevelsByNamespace[namespace]
+        index -= 1
+
+    return defaultLogLevel
+
+def setLogLevelForNamespace(namespace, level):
+    assert level in logLevels
+    logLevelsByNamespace[namespace] = level
+
+def clearLogLevels():
+    logLevelsByNamespace.clear()
+
+##
+# Loggers
+##
+
 class Logger (object):
     """
     Logging object.

Modified: CalendarServer/branches/users/wsanchez/logging/twistedcaldav/test/test_log.py
===================================================================
--- CalendarServer/branches/users/wsanchez/logging/twistedcaldav/test/test_log.py	2008-04-23 23:46:01 UTC (rev 2338)
+++ CalendarServer/branches/users/wsanchez/logging/twistedcaldav/test/test_log.py	2008-04-24 00:11:49 UTC (rev 2339)
@@ -14,7 +14,8 @@
 # limitations under the License.
 ##
 
-from twistedcaldav.log import Logger, LoggingMixIn, logLevels
+from twistedcaldav.log import *
+from twistedcaldav.log import defaultLogLevel
 
 import twisted.trial.unittest
 
@@ -66,6 +67,43 @@
                 method(message, junk=message)
 
                 # Ensure that test_emit got called with expected arguments
-                self.failUnless(log.emitted["level"] == level)
-                self.failUnless(log.emitted["message"] == message)
-                self.failUnless(log.emitted["kwargs"]["junk"] == message)
+                self.assertEquals(log.emitted["level"], level)
+                self.assertEquals(log.emitted["message"], message)
+                self.assertEquals(log.emitted["kwargs"]["junk"], message)
+
+    def test_defaultLogLevel(self):
+        """
+        Default log level is used.
+        """
+        clearLogLevels()
+        self.failUnless(logLevelForNamespace("rocker.cool.namespace"), defaultLogLevel)
+
+    def test_logLevel(self):
+        """
+        Setting and retrieving log levels.
+        """
+        clearLogLevels()
+
+        setLogLevelForNamespace("twisted.web2", "debug")
+        setLogLevelForNamespace("twisted.web2.dav", "error")
+
+        self.assertEquals(logLevelForNamespace("twisted"                     ), defaultLogLevel)
+        self.assertEquals(logLevelForNamespace("twisted.web2"                ), "debug")
+        self.assertEquals(logLevelForNamespace("twisted.web2.dav"            ), "error")
+        self.assertEquals(logLevelForNamespace("twisted.web2.dav.test"       ), "error")
+        self.assertEquals(logLevelForNamespace("twisted.web2.dav.test1.test2"), "error")
+
+    def test_clearLogLevel(self):
+        """
+        Clearing log levels.
+        """
+        setLogLevelForNamespace("twisted.web2", "debug")
+        setLogLevelForNamespace("twisted.web2.dav", "error")
+
+        clearLogLevels()
+
+        self.assertEquals(logLevelForNamespace("twisted"                     ), defaultLogLevel)
+        self.assertEquals(logLevelForNamespace("twisted.web2"                ), defaultLogLevel)
+        self.assertEquals(logLevelForNamespace("twisted.web2.dav"            ), defaultLogLevel)
+        self.assertEquals(logLevelForNamespace("twisted.web2.dav.test"       ), defaultLogLevel)
+        self.assertEquals(logLevelForNamespace("twisted.web2.dav.test1.test2"), defaultLogLevel)

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20080423/90b67165/attachment.html


More information about the calendarserver-changes mailing list