[CalendarServer-changes] [11236] CalendarServer/trunk/twext/python
source_changes at macosforge.org
source_changes at macosforge.org
Wed May 22 16:40:30 PDT 2013
Revision: 11236
http://trac.calendarserver.org//changeset/11236
Author: wsanchez at apple.com
Date: 2013-05-22 16:40:30 -0700 (Wed, 22 May 2013)
Log Message:
-----------
Change .err and .msg on Logger to be compatible with twisted.python.log.
Modified Paths:
--------------
CalendarServer/trunk/twext/python/log.py
CalendarServer/trunk/twext/python/test/test_log.py
Modified: CalendarServer/trunk/twext/python/log.py
===================================================================
--- CalendarServer/trunk/twext/python/log.py 2013-05-22 22:53:21 UTC (rev 11235)
+++ CalendarServer/trunk/twext/python/log.py 2013-05-22 23:40:30 UTC (rev 11236)
@@ -63,6 +63,7 @@
import inspect
import logging
+from twisted.python.failure import Failure
from twisted.python.reflect import safe_str
from twisted.python.log import msg as twistedLogMessage
from twisted.python.log import addObserver, removeObserver
@@ -109,7 +110,7 @@
raise InvalidLogLevelError(level)
# #
-# # In case we add log levels that don't map to pythong logging levels:
+# # In case we add log levels that don't map to python logging levels:
# #
# for l in logLevels:
# print("Trying %s: %s, %s" % (l, l in pythonLogLevelMapping, cmpLogLevels(level, l) <= 0))
@@ -196,7 +197,7 @@
def __repr__(self):
return "<%s %r>" % (self.__class__.__name__, self.namespace)
- def emit(self, level, message, **kwargs):
+ def emit(self, level, message=None, **kwargs):
"""
Called internally to emit log messages at a given log level.
"""
@@ -216,8 +217,17 @@
kwargs["legacyMessage"] = message
kwargs["format"] = "%(legacyMessage)s"
+ prefix = "[%(namespace)s#%(level)s] "
+
+ if "failure" in kwargs:
+ # Handle unfortunate logic in twisted.log.textFromEventDict()
+ # in which format is ignored if we have a failure and no why.
+ why = kwargs.get("why", None)
+ if not why:
+ why = "Unhandled Error"
+ kwargs["why"] = "%s%s" % (prefix % kwargs, why)
+
if "format" in kwargs:
- prefix = "[%(namespace)s#%(level)s] "
kwargs["format"] = "%s%s" % (prefix, kwargs["format"])
twistedLogMessage(**kwargs)
@@ -244,15 +254,31 @@
return cmpLogLevels(self.level(), level) <= 0
- def msg(self, *message, **kw):
+ def msg(self, *message, **kwargs):
if message:
message = " ".join(map(safe_str, message))
else:
message = None
- return self.emit("info", message, **kw)
+ return self.emit("info", message, **kwargs)
+ def err(self, _stuff=None, _why=None, **kwargs):
+ if _stuff is None:
+ _stuff = Failure()
+ elif isinstance(_stuff, Exception):
+ _stuff = Failure(_stuff)
+ # FIXME: We are setting isError=0 below to work around
+ # existing bugs, should be =1.
+
+ if isinstance(_stuff, Failure):
+ self.emit("error", failure=_stuff, why=_why, isError=0, **kwargs)
+ else:
+ # We got called with an invalid _stuff.
+ self.emit("error", repr(_stuff), why=_why, isError=0, **kwargs)
+
+
+
class LoggingMixIn (object):
"""
Mix-in class for logging methods.
@@ -321,10 +347,6 @@
del level
-# Add some compatibility with twisted's log module
-Logger.err = Logger.error
-
-
##
# Errors
##
Modified: CalendarServer/trunk/twext/python/test/test_log.py
===================================================================
--- CalendarServer/trunk/twext/python/test/test_log.py 2013-05-22 22:53:21 UTC (rev 11235)
+++ CalendarServer/trunk/twext/python/test/test_log.py 2013-05-22 23:40:30 UTC (rev 11236)
@@ -108,9 +108,13 @@
if log.willLogAtLevel(level):
self.assertEquals(log.eventDict["level"], level)
self.assertEquals(log.eventDict["logLevel"], pythonLogLevelForLevel(level))
+ self.assertEquals(log.eventDict["junk"], message)
+
# FIXME: this checks the end of message because we do formatting in emit()
- self.assertEquals(log.eventDict["message"][0][-len(message):], message)
- self.assertEquals(log.eventDict["junk"], message)
+ self.assertEquals(
+ twistedLogging.textFromEventDict(log.eventDict)[-len(message):],
+ message
+ )
else:
self.assertFalse(hasattr(log, "eventDict"))
@@ -136,9 +140,13 @@
if object.logger.willLogAtLevel(level):
self.assertEquals(object.logger.eventDict["level"], level)
self.assertEquals(object.logger.eventDict["logLevel"], pythonLogLevelForLevel(level))
+ self.assertEquals(object.logger.eventDict["junk"], message)
+
# FIXME: this checks the end of message because we do formatting in emit()
- self.assertEquals(object.logger.eventDict["message"][0][-len(message):], message)
- self.assertEquals(object.logger.eventDict["junk"], message)
+ self.assertEquals(
+ twistedLogging.textFromEventDict(object.logger.eventDict)[-len(message):],
+ message
+ )
else:
self.assertFalse(hasattr(object.logger, "eventDict"))
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20130522/98a8e619/attachment-0001.html>
More information about the calendarserver-changes
mailing list