[prev in list] [next in list] [prev in thread] [next in thread] 

List:       calendarserver-changes
Subject:    [CalendarServer-changes] [2339]
From:       source_changes () macosforge ! org
Date:       2008-04-24 0:11:50
Message-ID: 20080424001150.D0D8F15D22D6 () beta ! macosforge ! org
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Revision: 2339
          http://trac.macosforge.org/projects/calendarserver/changeset/2339
Author:   wsanchez@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)


[Attachment #5 (text/html)]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><style \
type="text/css"><!-- #msg dl { border: 1px #006 solid; background: #369; padding: \
6px; color: #fff; } #msg dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer { font-family: \
verdana,arial,helvetica,sans-serif; font-size: 10pt;  } #msg dl a { font-weight: \
bold} #msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: \
bold; } #msg pre, #msg p { overflow: auto; background: #ffc; border: 1px #fc0 solid; \
padding: 6px; } #msg ul { overflow: auto; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: \
6px; } #patch { width: 100%; }
#patch h4 {font-family: \
verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
 #patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, \
#patch .copfile {border:1px solid #ccc;margin:10px 0;} #patch ins \
{background:#dfd;text-decoration:none;display:block;padding:0 10px;} #patch del \
{background:#fdd;text-decoration:none;display:block;padding:0 10px;} #patch .lines, \
                .info {color:#888;background:#fff;}
--></style>
<title>[2339] CalendarServer/branches/users/wsanchez/logging/twistedcaldav</title>
</head>
<body>

<div id="msg">
<dl>
<dt>Revision</dt> <dd><a \
href="http://trac.macosforge.org/projects/calendarserver/changeset/2339">2339</a></dd>
 <dt>Author</dt> <dd>wsanchez@apple.com</dd>
<dt>Date</dt> <dd>2008-04-23 17:11:49 -0700 (Wed, 23 Apr 2008)</dd>
</dl>

<h3>Log Message</h3>
<pre>Add code to set and get log levels.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#CalendarServerbranchesuserswsanchezloggingtwistedcaldavlogpy">CalendarServer/branches/users/wsanchez/logging/twistedcaldav/log.py</a></li>
 <li><a href="#CalendarServerbranchesuserswsanchezloggingtwistedcaldavtesttest_logpy"> \
CalendarServer/branches/users/wsanchez/logging/twistedcaldav/test/test_log.py</a></li>
 </ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="CalendarServerbranchesuserswsanchezloggingtwistedcaldavlogpy"></a>
<div class="modfile"><h4>Modified: \
CalendarServer/branches/users/wsanchez/logging/twistedcaldav/log.py (2338 => \
2339)</h4> <pre class="diff"><span>
<span class="info">--- \
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) </span><span class="lines">@@ -35,6 +35,9 @@
</span><span class="cx"> 
</span><span class="cx"> __all__ = [
</span><span class="cx">     &quot;logLevels&quot;,
</span><ins>+    &quot;logLevelForNamespace&quot;,
+    &quot;setLogLevelForNamespace&quot;,
+    &quot;clearLogLevels&quot;,
</ins><span class="cx">     &quot;Logger&quot;,
</span><span class="cx">     &quot;LoggingMixIn&quot;,
</span><span class="cx"> ]
</span><span class="lines">@@ -52,6 +55,40 @@
</span><span class="cx"> 
</span><span class="cx"> logLevelIndexes = dict(zip(logLevels, xrange(0, \
len(logLevels)))) </span><span class="cx"> 
</span><ins>+##
+# Tools for manageing log levels
+##
+
+defaultLogLevel = &quot;info&quot;
+
+logLevelsByNamespace = {}
+
+def logLevelForNamespace(namespace):
+    if namespace in logLevelsByNamespace:
+        return logLevelsByNamespace[namespace]
+
+    segments = namespace.split(&quot;.&quot;)
+    index = len(segments) - 1
+
+    while index &gt; 0:
+        namespace = &quot;.&quot;.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
+##
+
</ins><span class="cx"> class Logger (object):
</span><span class="cx">     &quot;&quot;&quot;
</span><span class="cx">     Logging object.
</span></span></pre></div>
<a id="CalendarServerbranchesuserswsanchezloggingtwistedcaldavtesttest_logpy"></a>
<div class="modfile"><h4>Modified: \
CalendarServer/branches/users/wsanchez/logging/twistedcaldav/test/test_log.py (2338 \
=> 2339)</h4> <pre class="diff"><span>
<span class="info">--- \
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) </span><span class="lines">@@ -14,7 +14,8 @@
</span><span class="cx"> # limitations under the License.
</span><span class="cx"> ##
</span><span class="cx"> 
</span><del>-from twistedcaldav.log import Logger, LoggingMixIn, logLevels
</del><ins>+from twistedcaldav.log import *
+from twistedcaldav.log import defaultLogLevel
</ins><span class="cx"> 
</span><span class="cx"> import twisted.trial.unittest
</span><span class="cx"> 
</span><span class="lines">@@ -66,6 +67,43 @@
</span><span class="cx">                 method(message, junk=message)
</span><span class="cx"> 
</span><span class="cx">                 # Ensure that test_emit got called with \
expected arguments </span><del>-                \
                self.failUnless(log.emitted[&quot;level&quot;] == level)
-                self.failUnless(log.emitted[&quot;message&quot;] == message)
-                self.failUnless(log.emitted[&quot;kwargs&quot;][&quot;junk&quot;] == \
message) </del><ins>+                \
self.assertEquals(log.emitted[&quot;level&quot;], level) +                \
self.assertEquals(log.emitted[&quot;message&quot;], message) +                \
self.assertEquals(log.emitted[&quot;kwargs&quot;][&quot;junk&quot;], message) +
+    def test_defaultLogLevel(self):
+        &quot;&quot;&quot;
+        Default log level is used.
+        &quot;&quot;&quot;
+        clearLogLevels()
+        self.failUnless(logLevelForNamespace(&quot;rocker.cool.namespace&quot;), \
defaultLogLevel) +
+    def test_logLevel(self):
+        &quot;&quot;&quot;
+        Setting and retrieving log levels.
+        &quot;&quot;&quot;
+        clearLogLevels()
+
+        setLogLevelForNamespace(&quot;twisted.web2&quot;, &quot;debug&quot;)
+        setLogLevelForNamespace(&quot;twisted.web2.dav&quot;, &quot;error&quot;)
+
+        self.assertEquals(logLevelForNamespace(&quot;twisted&quot;                   \
), defaultLogLevel) +        \
self.assertEquals(logLevelForNamespace(&quot;twisted.web2&quot;                ), \
&quot;debug&quot;) +        \
self.assertEquals(logLevelForNamespace(&quot;twisted.web2.dav&quot;            ), \
&quot;error&quot;) +        \
self.assertEquals(logLevelForNamespace(&quot;twisted.web2.dav.test&quot;       ), \
&quot;error&quot;) +        \
self.assertEquals(logLevelForNamespace(&quot;twisted.web2.dav.test1.test2&quot;), \
&quot;error&quot;) +
+    def test_clearLogLevel(self):
+        &quot;&quot;&quot;
+        Clearing log levels.
+        &quot;&quot;&quot;
+        setLogLevelForNamespace(&quot;twisted.web2&quot;, &quot;debug&quot;)
+        setLogLevelForNamespace(&quot;twisted.web2.dav&quot;, &quot;error&quot;)
+
+        clearLogLevels()
+
+        self.assertEquals(logLevelForNamespace(&quot;twisted&quot;                   \
), defaultLogLevel) +        \
self.assertEquals(logLevelForNamespace(&quot;twisted.web2&quot;                ), \
defaultLogLevel) +        \
self.assertEquals(logLevelForNamespace(&quot;twisted.web2.dav&quot;            ), \
defaultLogLevel) +        \
self.assertEquals(logLevelForNamespace(&quot;twisted.web2.dav.test&quot;       ), \
defaultLogLevel) +        \
self.assertEquals(logLevelForNamespace(&quot;twisted.web2.dav.test1.test2&quot;), \
defaultLogLevel) </ins></span></pre>
</div>
</div>

</body>
</html>



_______________________________________________
calendarserver-changes mailing list
calendarserver-changes@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo/calendarserver-changes


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic