[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"> "logLevels",
</span><ins>+ "logLevelForNamespace",
+ "setLogLevelForNamespace",
+ "clearLogLevels",
</ins><span class="cx"> "Logger",
</span><span class="cx"> "LoggingMixIn",
</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 = "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
+##
+
</ins><span class="cx"> class Logger (object):
</span><span class="cx"> """
</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["level"] == level)
- self.failUnless(log.emitted["message"] == message)
- self.failUnless(log.emitted["kwargs"]["junk"] == \
message) </del><ins>+ \
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) </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