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

source_changes at macosforge.org source_changes at macosforge.org
Thu Apr 24 15:31:17 PDT 2008


Revision: 2345
          http://trac.macosforge.org/projects/calendarserver/changeset/2345
Author:   wsanchez at apple.com
Date:     2008-04-24 15:31:16 -0700 (Thu, 24 Apr 2008)

Log Message:
-----------
Add some sorting tools.

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-24 21:41:09 UTC (rev 2344)
+++ CalendarServer/branches/users/wsanchez/logging/twistedcaldav/log.py	2008-04-24 22:31:16 UTC (rev 2345)
@@ -35,6 +35,9 @@
 
 __all__ = [
     "logLevels",
+    "cmpLogLevels",
+    "lowestLogLevel",
+    "highestLogLevel",
     "logLevelForNamespace",
     "setLogLevelForNamespace",
     "clearLogLevels",
@@ -55,6 +58,15 @@
 
 logLevelIndexes = dict(zip(logLevels, xrange(0, len(logLevels))))
 
+def cmpLogLevels(a, b):
+    return cmp(logLevelIndexes[a], logLevelIndexes[b])
+
+def lowestLogLevel(*levels):
+    return sorted(levels, cmpLogLevels)[0]
+
+def highestLogLevel(*levels):
+    return sorted(levels, cmpLogLevels, reverse=True)[0]
+
 ##
 # Tools for manageing log levels
 ##
@@ -68,6 +80,9 @@
     @param namespace: a logging namespace
     @return: the log level for the given namespace.
     """
+    if not namespace:
+        return defaultLogLevel
+
     if namespace in logLevelsByNamespace:
         return logLevelsByNamespace[namespace]
 
@@ -89,6 +104,11 @@
     @param level: the log level for the given namespace.
     """
     assert level in logLevels
+
+    if not namespace:
+        global defaultLogLevel
+        defaultLogLevel = level
+
     logLevelsByNamespace[namespace] = level
 
 def clearLogLevels():
@@ -128,7 +148,7 @@
         assert level in logLevels
         log.msg(
             str(message),
-            isError = (logLevelIndexes[level] >= logLevelIndexes["error"]),
+            isError = (cmpLogLevels(level, "error") >= 0),
             level = level,
             namespace = self.namespace,
             **kwargs

Modified: CalendarServer/branches/users/wsanchez/logging/twistedcaldav/test/test_log.py
===================================================================
--- CalendarServer/branches/users/wsanchez/logging/twistedcaldav/test/test_log.py	2008-04-24 21:41:09 UTC (rev 2344)
+++ CalendarServer/branches/users/wsanchez/logging/twistedcaldav/test/test_log.py	2008-04-24 22:31:16 UTC (rev 2345)
@@ -36,6 +36,21 @@
     pass
 
 class Logging (twisted.trial.unittest.TestCase):
+    def test_cmpLogLevels(self):
+        self.assertEquals(cmpLogLevels("info" , "error"), -1)
+        self.assertEquals(cmpLogLevels("debug", "debug"),  0)
+        self.assertEquals(cmpLogLevels("warn" , "debug"),  1)
+
+    def test_lowestLogLevel(self):
+        self.assertEquals(lowestLogLevel(*logLevels), "debug")
+        self.assertEquals(lowestLogLevel(*reversed(logLevels)), "debug")
+        self.assertEquals(lowestLogLevel("warn", "info"), "info")
+
+    def test_highestLogLevel(self):
+        self.assertEquals(highestLogLevel(*logLevels), "error")
+        self.assertEquals(highestLogLevel(*reversed(logLevels)), "error")
+        self.assertEquals(highestLogLevel("warn", "info"), "warn")
+
     def test_namespace_default(self):
         """
         Default namespace is module name.

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


More information about the calendarserver-changes mailing list