[CalendarServer-changes] [5157] CalendarServer/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Sat Feb 20 06:16:52 PST 2010
Revision: 5157
http://trac.macosforge.org/projects/calendarserver/changeset/5157
Author: wsanchez at apple.com
Date: 2010-02-20 06:16:52 -0800 (Sat, 20 Feb 2010)
Log Message:
-----------
twext.log -> twext.python.log
Modified Paths:
--------------
CalendarServer/trunk/calendarserver/provision/root.py
CalendarServer/trunk/calendarserver/sidecar/task.py
CalendarServer/trunk/calendarserver/tap/caldav.py
CalendarServer/trunk/calendarserver/tap/carddav.py
CalendarServer/trunk/calendarserver/tools/loadaugmentdb.py
CalendarServer/trunk/calendarserver/tools/manageaugments.py
CalendarServer/trunk/calendarserver/tools/principals.py
CalendarServer/trunk/calendarserver/util.py
CalendarServer/trunk/memcacheclient.py
CalendarServer/trunk/twext/internet/tcp.py
CalendarServer/trunk/twext/python/log.py
CalendarServer/trunk/twistedcaldav/accesslog.py
CalendarServer/trunk/twistedcaldav/accounting.py
CalendarServer/trunk/twistedcaldav/authkerb.py
CalendarServer/trunk/twistedcaldav/cache.py
CalendarServer/trunk/twistedcaldav/caldavxml.py
CalendarServer/trunk/twistedcaldav/client/pool.py
CalendarServer/trunk/twistedcaldav/client/reverseproxy.py
CalendarServer/trunk/twistedcaldav/database.py
CalendarServer/trunk/twistedcaldav/directory/augment.py
CalendarServer/trunk/twistedcaldav/directory/cachingdirectory.py
CalendarServer/trunk/twistedcaldav/directory/calendar.py
CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py
CalendarServer/trunk/twistedcaldav/directory/calendaruserproxyloader.py
CalendarServer/trunk/twistedcaldav/directory/digest.py
CalendarServer/trunk/twistedcaldav/directory/directory.py
CalendarServer/trunk/twistedcaldav/directory/principal.py
CalendarServer/trunk/twistedcaldav/directory/resourceinfo.py
CalendarServer/trunk/twistedcaldav/directory/wiki.py
CalendarServer/trunk/twistedcaldav/directory/xmlaccountsparser.py
CalendarServer/trunk/twistedcaldav/directory/xmlaugmentsparser.py
CalendarServer/trunk/twistedcaldav/directorybackedaddressbook.py
CalendarServer/trunk/twistedcaldav/dropbox.py
CalendarServer/trunk/twistedcaldav/extensions.py
CalendarServer/trunk/twistedcaldav/ical.py
CalendarServer/trunk/twistedcaldav/index.py
CalendarServer/trunk/twistedcaldav/localization.py
CalendarServer/trunk/twistedcaldav/mail.py
CalendarServer/trunk/twistedcaldav/memcachepool.py
CalendarServer/trunk/twistedcaldav/memcacheprops.py
CalendarServer/trunk/twistedcaldav/memcacher.py
CalendarServer/trunk/twistedcaldav/method/copymove.py
CalendarServer/trunk/twistedcaldav/method/copymove_contact.py
CalendarServer/trunk/twistedcaldav/method/delete.py
CalendarServer/trunk/twistedcaldav/method/delete_common.py
CalendarServer/trunk/twistedcaldav/method/mkcalendar.py
CalendarServer/trunk/twistedcaldav/method/propfind.py
CalendarServer/trunk/twistedcaldav/method/put.py
CalendarServer/trunk/twistedcaldav/method/put_addressbook_common.py
CalendarServer/trunk/twistedcaldav/method/put_common.py
CalendarServer/trunk/twistedcaldav/method/report.py
CalendarServer/trunk/twistedcaldav/method/report_calquery.py
CalendarServer/trunk/twistedcaldav/method/report_common.py
CalendarServer/trunk/twistedcaldav/method/report_freebusy.py
CalendarServer/trunk/twistedcaldav/method/report_multiget.py
CalendarServer/trunk/twistedcaldav/method/report_sync_collection.py
CalendarServer/trunk/twistedcaldav/notify.py
CalendarServer/trunk/twistedcaldav/partitions.py
CalendarServer/trunk/twistedcaldav/pdmonster.py
CalendarServer/trunk/twistedcaldav/resource.py
CalendarServer/trunk/twistedcaldav/scheduling/addressmapping.py
CalendarServer/trunk/twistedcaldav/scheduling/caldav.py
CalendarServer/trunk/twistedcaldav/scheduling/cuaddress.py
CalendarServer/trunk/twistedcaldav/scheduling/delivery.py
CalendarServer/trunk/twistedcaldav/scheduling/icaldiff.py
CalendarServer/trunk/twistedcaldav/scheduling/imip.py
CalendarServer/trunk/twistedcaldav/scheduling/implicit.py
CalendarServer/trunk/twistedcaldav/scheduling/ischedule.py
CalendarServer/trunk/twistedcaldav/scheduling/ischeduleservers.py
CalendarServer/trunk/twistedcaldav/scheduling/itip.py
CalendarServer/trunk/twistedcaldav/scheduling/processing.py
CalendarServer/trunk/twistedcaldav/scheduling/scheduler.py
CalendarServer/trunk/twistedcaldav/sql.py
CalendarServer/trunk/twistedcaldav/static.py
CalendarServer/trunk/twistedcaldav/stdconfig.py
CalendarServer/trunk/twistedcaldav/test/test_config.py
CalendarServer/trunk/twistedcaldav/test/test_log.py
CalendarServer/trunk/twistedcaldav/timezones.py
CalendarServer/trunk/twistedcaldav/upgrade.py
CalendarServer/trunk/twistedcaldav/util.py
CalendarServer/trunk/twistedcaldav/vcardindex.py
CalendarServer/trunk/txcaldav/calendarstore/file.py
CalendarServer/trunk/txdav/propertystore/base.py
Removed Paths:
-------------
CalendarServer/trunk/twext/log.py
Modified: CalendarServer/trunk/calendarserver/provision/root.py
===================================================================
--- CalendarServer/trunk/calendarserver/provision/root.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/calendarserver/provision/root.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -26,7 +26,7 @@
from twext.web2.auth.wrapper import UnauthorizedResponse
from twisted.web.xmlrpc import Proxy
-from twext.log import Logger
+from twext.python.log import Logger
from twistedcaldav.extensions import DAVFile, CachingPropertyStore
from twistedcaldav.extensions import DirectoryPrincipalPropertySearchMixIn
Modified: CalendarServer/trunk/calendarserver/sidecar/task.py
===================================================================
--- CalendarServer/trunk/calendarserver/sidecar/task.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/calendarserver/sidecar/task.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -33,8 +33,8 @@
from twisted.python.usage import Options, UsageError
from twext.web2.http_headers import Headers
-from twext.log import Logger, LoggingMixIn
-from twext.log import logLevelForNamespace, setLogLevelForNamespace
+from twext.python.log import Logger, LoggingMixIn
+from twext.python.log import logLevelForNamespace, setLogLevelForNamespace
from twistedcaldav.config import config
from twistedcaldav.stdconfig import DEFAULT_CONFIG, DEFAULT_CONFIG_FILE
Modified: CalendarServer/trunk/calendarserver/tap/caldav.py
===================================================================
--- CalendarServer/trunk/calendarserver/tap/caldav.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/calendarserver/tap/caldav.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -47,8 +47,8 @@
from twisted.runner import procmon
from twext.web2.server import Site
-from twext.log import Logger, LoggingMixIn
-from twext.log import logLevelForNamespace, setLogLevelForNamespace
+from twext.python.log import Logger, LoggingMixIn
+from twext.python.log import logLevelForNamespace, setLogLevelForNamespace
from twext.internet.ssl import ChainingOpenSSLContextFactory
from twext.internet.tcp import MaxAcceptTCPServer, MaxAcceptSSLServer
from twext.web2.channel.http import LimitingHTTPFactory, SSLRedirectRequest
Modified: CalendarServer/trunk/calendarserver/tap/carddav.py
===================================================================
--- CalendarServer/trunk/calendarserver/tap/carddav.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/calendarserver/tap/carddav.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -24,7 +24,7 @@
from twisted.application.service import IServiceMaker
from twistedcaldav.stdconfig import DEFAULT_CARDDAV_CONFIG_FILE
-from twext.log import Logger
+from twext.python.log import Logger
log = Logger()
Modified: CalendarServer/trunk/calendarserver/tools/loadaugmentdb.py
===================================================================
--- CalendarServer/trunk/calendarserver/tools/loadaugmentdb.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/calendarserver/tools/loadaugmentdb.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -23,7 +23,7 @@
from pwd import getpwnam
from sys import stdout, stderr
-from twext.log import setLogLevelForNamespace
+from twext.python.log import setLogLevelForNamespace
from twisted.internet import reactor
from twisted.internet.defer import inlineCallbacks
Modified: CalendarServer/trunk/calendarserver/tools/manageaugments.py
===================================================================
--- CalendarServer/trunk/calendarserver/tools/manageaugments.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/calendarserver/tools/manageaugments.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -21,7 +21,7 @@
from grp import getgrnam
from optparse import OptionParser
from pwd import getpwnam
-from twext.log import setLogLevelForNamespace
+from twext.python.log import setLogLevelForNamespace
from twisted.internet import reactor
from twisted.python.util import switchUID
from twistedcaldav.config import config, ConfigurationError
Modified: CalendarServer/trunk/calendarserver/tools/principals.py
===================================================================
--- CalendarServer/trunk/calendarserver/tools/principals.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/calendarserver/tools/principals.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -29,7 +29,7 @@
from twisted.internet.defer import inlineCallbacks
from twext.web2.dav import davxml
-from twext.log import setLogLevelForNamespace
+from twext.python.log import setLogLevelForNamespace
from twext.python.log import StandardIOObserver
from twext.web2.dav.davxml import sname2qname, qname2sname
Modified: CalendarServer/trunk/calendarserver/util.py
===================================================================
--- CalendarServer/trunk/calendarserver/util.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/calendarserver/util.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -31,7 +31,7 @@
from twext.web2.static import File as FileResource
from twext.python.filepath import CachingFilePath as FilePath
-from twext.log import Logger
+from twext.python.log import Logger
from twistedcaldav import memcachepool
from twistedcaldav.accesslog import DirectoryLogWrapperResource
Modified: CalendarServer/trunk/memcacheclient.py
===================================================================
--- CalendarServer/trunk/memcacheclient.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/memcacheclient.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -50,7 +50,7 @@
import re
import types
-from twext.log import Logger
+from twext.python.log import Logger
from twistedcaldav.config import config
Modified: CalendarServer/trunk/twext/internet/tcp.py
===================================================================
--- CalendarServer/trunk/twext/internet/tcp.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twext/internet/tcp.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -29,7 +29,7 @@
from twisted.application import internet
from twisted.internet import tcp, ssl
-from twext.log import Logger
+from twext.python.log import Logger
log = Logger()
Deleted: CalendarServer/trunk/twext/log.py
===================================================================
--- CalendarServer/trunk/twext/log.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twext/log.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -1,317 +0,0 @@
-##
-# Copyright (c) 2006-2010 Apple Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-##
-
-"""
-Classes and functions to do granular logging.
-
-Example usage in a module:
-
- from twext.log import Logger
- log = Logger()
-
- log.info("Blah blah")
-
-Or in a class:
-
- from twext.log import LoggingMixIn
-
- class Foo (LoggingMixIn):
- def oops(self):
- self.log_error("Oops!")
-
-C{Logger}s have namespaces, for which logging can be configured
-independently. Namespaces may be specified by passing in a
-C{namespace} argument to L{Logger} when instantiating it, but if none
-is given, the logger will derive its own namespace by using the module
-name of the callable that instantiating it, or, in the case of a
-L{LoggingMixIn}, by using the fully qualified name of the class.
-
-In the first example above, the namespace would be C{some.module}, and
-in the second example, it would be C{some.module.Foo}.
-"""
-
-__all__ = [
- "logLevels",
- "cmpLogLevels",
- "pythonLogLevelForLevel",
- "logLevelForNamespace",
- "setLogLevelForNamespace",
- "clearLogLevels",
- "logLevelsByNamespace",
- "Logger",
- "LoggingMixIn",
- "InvalidLogLevelError",
-]
-
-import inspect
-import logging
-
-from twisted.python import log
-
-logLevels = (
- "debug",
- "info",
- "warn",
- "error",
-)
-
-logLevelIndexes = dict(zip(logLevels, xrange(0, len(logLevels))))
-
-def cmpLogLevels(a, b):
- """
- Compare two log levels.
- @param a: a log level
- @param b: a log level
- @return: a negative integer if C{a < b}, C{0} if C{a == b}, or a
- positive integer if C{a > b}.
- """
- return cmp(logLevelIndexes[a], logLevelIndexes[b])
-
-##
-# Mappings to Python's logging module
-##
-
-pythonLogLevelMapping = {
- "debug" : logging.DEBUG,
- "info" : logging.INFO,
- "warn" : logging.WARNING,
- "error" : logging.ERROR,
- #"critical": logging.CRITICAL,
-}
-
-def pythonLogLevelForLevel(level):
- """
- @param: a log level
- @return: a L{logging} module log level
- """
- if level in pythonLogLevelMapping:
- return pythonLogLevelMapping[level]
-
- raise InvalidLogLevelError(level)
-
-# #
-# # In case we add log levels that don't map to pythong logging levels:
-# #
-# for l in logLevels:
-# print "Trying %s: %s, %s" % (l, l in pythonLogLevelMapping, cmpLogLevels(level, l) <= 0)
-# if l in pythonLogLevelMapping and cmpLogLevels(level, l) <= 0:
-# return pythonLogLevelMapping[l]
-#
-# return logging.CRITICAL
-
-##
-# Tools for managing log levels
-##
-
-def logLevelForNamespace(namespace):
- """
- @param namespace: a logging namespace, or C{None} to set the
- default log level.
- @return: the log level for the given namespace.
- """
- if not namespace:
- return logLevelsByNamespace[None]
-
- 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 logLevelsByNamespace[None]
-
-def setLogLevelForNamespace(namespace, level):
- """
- Sets the log level for a logging namespace.
- @param namespace: a logging namespace
- @param level: the log level for the given namespace.
- """
- if level not in logLevels:
- raise InvalidLogLevelError(level)
-
- if namespace:
- logLevelsByNamespace[namespace] = level
- else:
- logLevelsByNamespace[None] = level
-
-def clearLogLevels():
- """
- Clears all log levels to the default.
- """
- logLevelsByNamespace.clear()
- logLevelsByNamespace[None] = "warn" # Default log level
-
-logLevelsByNamespace = {}
-clearLogLevels()
-
-##
-# Loggers
-##
-
-class Logger (object):
- """
- Logging object.
- """
- def __init__(self, namespace=None):
- """
- @param namespace: The namespace for this logger. Uses a
- dotted notation, as used by python modules. If not
- C{None}, then the name of the module of the caller
- is used.
- """
- if namespace is None:
- currentFrame = inspect.currentframe()
- callerFrame = currentFrame.f_back
- callerModule = callerFrame.f_globals["__name__"]
-
- namespace = callerModule
-
- self.namespace = namespace
-
- def __repr__(self):
- return "<%s %r>" % (self.__class__.__name__, self.namespace)
-
- def emit(self, level, message, **kwargs):
- """
- Called internally to emit log messages at a given log level.
- """
- assert level in logLevels, "Unknown log level: %r" % (level,)
-
- logLevel = pythonLogLevelForLevel(level)
-
- # FIXME: Filtering should be done by the log observer(s)
- if not self.willLogAtLevel(level):
- return
-
- kwargs["level"] = level
- kwargs["logLevel"] = logLevel
- kwargs["namespace"] = self.namespace
-
- log.msg(
- # FIXME: This formatting should be done by the log observer(s)
- "[%s#%s] %s" % (self.namespace, level, message),
- **kwargs
- )
-
- def level(self):
- """
- @return: the logging level for this logger's namespace.
- """
- return logLevelForNamespace(self.namespace)
-
- def setLevel(self, level):
- """
- Set the logging level for this logger's namespace.
- @param level: a logging level
- """
- setLogLevelForNamespace(self.namespace, level)
-
- def willLogAtLevel(self, level):
- """
- @param level: a logging level
- @return: C{True} if this logger will log at the given logging
- level.
- """
- return cmpLogLevels(self.level(), level) <= 0
-
-
-class LoggingMixIn (object):
- """
- Mix-in class for logging methods.
- """
- def _getLogger(self):
- try:
- return self._logger
- except AttributeError:
- self._logger = Logger(
- "%s.%s" % (
- self.__class__.__module__,
- self.__class__.__name__,
- )
- )
-
- return self._logger
-
- def _setLogger(self, value):
- self._logger = value
-
- logger = property(_getLogger, _setLogger)
-
-for level in logLevels:
- doc = """
- Emit a log message at log level C{%s}.
- @param message: The message to emit.
- """ % (level,)
-
- #
- # Attach methods to Logger
- #
- def log_emit(self, message, __level__=level, raiseException=None, **kwargs):
- self.emit(__level__, message, **kwargs)
- if raiseException:
- raise raiseException(message)
-
- def will_emit(self, __level__=level):
- return self.willLogAtLevel(__level__)
-
- log_emit.__doc__ = doc
-
- setattr(Logger, level, log_emit)
- setattr(Logger, level + "_enabled", property(will_emit))
-
- del log_emit
- del will_emit
-
- #
- # Attach methods to LoggingMixIn
- #
- def log_emit(self, message, __level__=level, raiseException=None, **kwargs):
- self.logger.emit(__level__, message, **kwargs)
- if raiseException:
- raise raiseException(message)
-
- def will_emit(self=log_emit, __level__=level):
- return self.logger.willLogAtLevel(__level__)
-
- log_emit.__doc__ = doc
- log_emit.enabled = will_emit
-
- setattr(LoggingMixIn, "log_" + level, log_emit)
- setattr(LoggingMixIn, "log_" + level + "_enabled", property(will_emit))
-
- del log_emit
- del will_emit
-
-del level
-
-# Add some compatibility with twisted's log module
-Logger.msg = Logger.info
-Logger.err = Logger.error
-
-##
-# Errors
-##
-
-class InvalidLogLevelError (RuntimeError):
- def __init__(self, level):
- super(InvalidLogLevelError, self).__init__(str(level))
- self.level = level
Modified: CalendarServer/trunk/twext/python/log.py
===================================================================
--- CalendarServer/trunk/twext/python/log.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twext/python/log.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -1,5 +1,5 @@
##
-# Copyright (c) 2009 Apple Inc. All rights reserved.
+# Copyright (c) 2006-2010 Apple Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -15,13 +15,315 @@
##
"""
-Extensions to twisted.python.log.
+Classes and functions to do granular logging.
+
+Example usage in a module:
+
+ from twext.python.log import Logger
+ log = Logger()
+
+ log.info("Blah blah")
+
+Or in a class:
+
+ from twext.python.log import LoggingMixIn
+
+ class Foo (LoggingMixIn):
+ def oops(self):
+ self.log_error("Oops!")
+
+C{Logger}s have namespaces, for which logging can be configured
+independently. Namespaces may be specified by passing in a
+C{namespace} argument to L{Logger} when instantiating it, but if none
+is given, the logger will derive its own namespace by using the module
+name of the callable that instantiating it, or, in the case of a
+L{LoggingMixIn}, by using the fully qualified name of the class.
+
+In the first example above, the namespace would be C{some.module}, and
+in the second example, it would be C{some.module.Foo}.
"""
+__all__ = [
+ "logLevels",
+ "cmpLogLevels",
+ "pythonLogLevelForLevel",
+ "logLevelForNamespace",
+ "setLogLevelForNamespace",
+ "clearLogLevels",
+ "logLevelsByNamespace",
+ "Logger",
+ "LoggingMixIn",
+ "InvalidLogLevelError",
+ "StandardIOObserver",
+]
+
from sys import stdout, stderr
+import inspect
+import logging
+
+from twisted.python.log import msg as twistedLogMessage
from twisted.python.log import addObserver, removeObserver
+logLevels = (
+ "debug",
+ "info",
+ "warn",
+ "error",
+)
+
+logLevelIndexes = dict(zip(logLevels, xrange(0, len(logLevels))))
+
+def cmpLogLevels(a, b):
+ """
+ Compare two log levels.
+ @param a: a log level
+ @param b: a log level
+ @return: a negative integer if C{a < b}, C{0} if C{a == b}, or a
+ positive integer if C{a > b}.
+ """
+ return cmp(logLevelIndexes[a], logLevelIndexes[b])
+
+##
+# Mappings to Python's logging module
+##
+
+pythonLogLevelMapping = {
+ "debug" : logging.DEBUG,
+ "info" : logging.INFO,
+ "warn" : logging.WARNING,
+ "error" : logging.ERROR,
+ #"critical": logging.CRITICAL,
+}
+
+def pythonLogLevelForLevel(level):
+ """
+ @param: a log level
+ @return: a L{logging} module log level
+ """
+ if level in pythonLogLevelMapping:
+ return pythonLogLevelMapping[level]
+
+ raise InvalidLogLevelError(level)
+
+# #
+# # In case we add log levels that don't map to pythong logging levels:
+# #
+# for l in logLevels:
+# print "Trying %s: %s, %s" % (l, l in pythonLogLevelMapping, cmpLogLevels(level, l) <= 0)
+# if l in pythonLogLevelMapping and cmpLogLevels(level, l) <= 0:
+# return pythonLogLevelMapping[l]
+#
+# return logging.CRITICAL
+
+##
+# Tools for managing log levels
+##
+
+def logLevelForNamespace(namespace):
+ """
+ @param namespace: a logging namespace, or C{None} to set the
+ default log level.
+ @return: the log level for the given namespace.
+ """
+ if not namespace:
+ return logLevelsByNamespace[None]
+
+ 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 logLevelsByNamespace[None]
+
+def setLogLevelForNamespace(namespace, level):
+ """
+ Sets the log level for a logging namespace.
+ @param namespace: a logging namespace
+ @param level: the log level for the given namespace.
+ """
+ if level not in logLevels:
+ raise InvalidLogLevelError(level)
+
+ if namespace:
+ logLevelsByNamespace[namespace] = level
+ else:
+ logLevelsByNamespace[None] = level
+
+def clearLogLevels():
+ """
+ Clears all log levels to the default.
+ """
+ logLevelsByNamespace.clear()
+ logLevelsByNamespace[None] = "warn" # Default log level
+
+logLevelsByNamespace = {}
+clearLogLevels()
+
+##
+# Loggers
+##
+
+class Logger (object):
+ """
+ Logging object.
+ """
+ def __init__(self, namespace=None):
+ """
+ @param namespace: The namespace for this logger. Uses a
+ dotted notation, as used by python modules. If not
+ C{None}, then the name of the module of the caller
+ is used.
+ """
+ if namespace is None:
+ currentFrame = inspect.currentframe()
+ callerFrame = currentFrame.f_back
+ callerModule = callerFrame.f_globals["__name__"]
+
+ namespace = callerModule
+
+ self.namespace = namespace
+
+ def __repr__(self):
+ return "<%s %r>" % (self.__class__.__name__, self.namespace)
+
+ def emit(self, level, message, **kwargs):
+ """
+ Called internally to emit log messages at a given log level.
+ """
+ assert level in logLevels, "Unknown log level: %r" % (level,)
+
+ logLevel = pythonLogLevelForLevel(level)
+
+ # FIXME: Filtering should be done by the log observer(s)
+ if not self.willLogAtLevel(level):
+ return
+
+ kwargs["level"] = level
+ kwargs["logLevel"] = logLevel
+ kwargs["namespace"] = self.namespace
+
+ twistedLogMessage(
+ # FIXME: This formatting should be done by the log observer(s)
+ "[%s#%s] %s" % (self.namespace, level, message),
+ **kwargs
+ )
+
+ def level(self):
+ """
+ @return: the logging level for this logger's namespace.
+ """
+ return logLevelForNamespace(self.namespace)
+
+ def setLevel(self, level):
+ """
+ Set the logging level for this logger's namespace.
+ @param level: a logging level
+ """
+ setLogLevelForNamespace(self.namespace, level)
+
+ def willLogAtLevel(self, level):
+ """
+ @param level: a logging level
+ @return: C{True} if this logger will log at the given logging
+ level.
+ """
+ return cmpLogLevels(self.level(), level) <= 0
+
+
+class LoggingMixIn (object):
+ """
+ Mix-in class for logging methods.
+ """
+ def _getLogger(self):
+ try:
+ return self._logger
+ except AttributeError:
+ self._logger = Logger(
+ "%s.%s" % (
+ self.__class__.__module__,
+ self.__class__.__name__,
+ )
+ )
+
+ return self._logger
+
+ def _setLogger(self, value):
+ self._logger = value
+
+ logger = property(_getLogger, _setLogger)
+
+for level in logLevels:
+ doc = """
+ Emit a log message at log level C{%s}.
+ @param message: The message to emit.
+ """ % (level,)
+
+ #
+ # Attach methods to Logger
+ #
+ def log_emit(self, message, __level__=level, raiseException=None, **kwargs):
+ self.emit(__level__, message, **kwargs)
+ if raiseException:
+ raise raiseException(message)
+
+ def will_emit(self, __level__=level):
+ return self.willLogAtLevel(__level__)
+
+ log_emit.__doc__ = doc
+
+ setattr(Logger, level, log_emit)
+ setattr(Logger, level + "_enabled", property(will_emit))
+
+ del log_emit
+ del will_emit
+
+ #
+ # Attach methods to LoggingMixIn
+ #
+ def log_emit(self, message, __level__=level, raiseException=None, **kwargs):
+ self.logger.emit(__level__, message, **kwargs)
+ if raiseException:
+ raise raiseException(message)
+
+ def will_emit(self=log_emit, __level__=level):
+ return self.logger.willLogAtLevel(__level__)
+
+ log_emit.__doc__ = doc
+ log_emit.enabled = will_emit
+
+ setattr(LoggingMixIn, "log_" + level, log_emit)
+ setattr(LoggingMixIn, "log_" + level + "_enabled", property(will_emit))
+
+ del log_emit
+ del will_emit
+
+del level
+
+# Add some compatibility with twisted's log module
+Logger.msg = Logger.info
+Logger.err = Logger.error
+
+##
+# Errors
+##
+
+class InvalidLogLevelError (RuntimeError):
+ def __init__(self, level):
+ super(InvalidLogLevelError, self).__init__(str(level))
+ self.level = level
+
+##
+# Observers
+##
+
class StandardIOObserver (object):
"""
Log observer that writes to standard I/O.
Modified: CalendarServer/trunk/twistedcaldav/accesslog.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/accesslog.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/accesslog.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -36,7 +36,7 @@
from twext.web2.log import BaseCommonAccessLoggingObserver
from twext.web2.log import LogWrapperResource
-from twext.log import Logger
+from twext.python.log import Logger
from twistedcaldav.config import config
from twistedcaldav.directory.directory import DirectoryService
Modified: CalendarServer/trunk/twistedcaldav/accounting.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/accounting.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/accounting.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -27,7 +27,7 @@
import datetime
import os
-from twext.log import Logger
+from twext.python.log import Logger
from twistedcaldav.config import config
Modified: CalendarServer/trunk/twistedcaldav/authkerb.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/authkerb.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/authkerb.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -46,7 +46,7 @@
from twext.web2.auth.interfaces import ICredentialFactory
from twext.web2.dav.auth import IPrincipalCredentials
-from twext.log import LoggingMixIn
+from twext.python.log import LoggingMixIn
class KerberosCredentialFactoryBase(LoggingMixIn):
"""
Modified: CalendarServer/trunk/twistedcaldav/cache.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/cache.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/cache.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -26,7 +26,7 @@
from twext.web2.iweb import IResource
from twext.web2.stream import MemoryStream
-from twext.log import LoggingMixIn
+from twext.python.log import LoggingMixIn
from twistedcaldav.memcachepool import CachePoolUserMixIn, defaultCachePool
from twistedcaldav.config import config
Modified: CalendarServer/trunk/twistedcaldav/caldavxml.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/caldavxml.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/caldavxml.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -31,7 +31,7 @@
from twext.web2.dav import davxml
-from twext.log import Logger
+from twext.python.log import Logger
from twistedcaldav.dateops import clipPeriod, timeRangesOverlap
from twistedcaldav.ical import Component as iComponent
Modified: CalendarServer/trunk/twistedcaldav/client/pool.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/client/pool.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/client/pool.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -23,7 +23,7 @@
import OpenSSL
import urlparse
-from twext.log import LoggingMixIn
+from twext.python.log import LoggingMixIn
from twext.internet.ssl import ChainingOpenSSLContextFactory
from twisted.internet.address import IPv4Address
Modified: CalendarServer/trunk/twistedcaldav/client/reverseproxy.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/client/reverseproxy.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/client/reverseproxy.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -26,7 +26,7 @@
from twext.web2.client.http import ClientRequest
from twext.web2.resource import LeafResource
-from twext.log import LoggingMixIn
+from twext.python.log import LoggingMixIn
from twistedcaldav.client.pool import getHTTPClientPool
from twistedcaldav.config import config
Modified: CalendarServer/trunk/twistedcaldav/database.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/database.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/database.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -26,7 +26,7 @@
from twisted.internet.defer import inlineCallbacks, returnValue
from twisted.python.threadpool import ThreadPool
-from twext.log import Logger
+from twext.python.log import Logger
from twistedcaldav.config import ConfigurationError
Modified: CalendarServer/trunk/twistedcaldav/directory/augment.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/augment.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/directory/augment.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -19,7 +19,7 @@
from twisted.internet.defer import inlineCallbacks, returnValue, succeed
-from twext.log import Logger
+from twext.python.log import Logger
from twistedcaldav.config import fullServerPath, config
from twistedcaldav.database import AbstractADBAPIDatabase, ADBAPISqliteMixin,\
Modified: CalendarServer/trunk/twistedcaldav/directory/cachingdirectory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/cachingdirectory.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/directory/cachingdirectory.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -31,7 +31,7 @@
import memcacheclient
import base64
-from twext.log import LoggingMixIn
+from twext.python.log import LoggingMixIn
from twistedcaldav.config import config
from twistedcaldav.directory.directory import DirectoryService, DirectoryRecord, DirectoryError, UnknownRecordTypeError
Modified: CalendarServer/trunk/twistedcaldav/directory/calendar.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/calendar.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/directory/calendar.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -34,7 +34,7 @@
from twext.web2.dav.util import joinURL
from twext.web2.dav.resource import TwistedACLInheritable
-from twext.log import Logger
+from twext.python.log import Logger
from twistedcaldav import caldavxml
from twistedcaldav.config import config
Modified: CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -37,7 +37,7 @@
from twext.web2.dav.util import joinURL
from twext.web2.dav.noneprops import NonePropertyStore
-from twext.log import LoggingMixIn
+from twext.python.log import LoggingMixIn
from twistedcaldav.config import config, fullServerPath
from twistedcaldav.database import AbstractADBAPIDatabase, ADBAPISqliteMixin,\
Modified: CalendarServer/trunk/twistedcaldav/directory/calendaruserproxyloader.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/calendaruserproxyloader.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/directory/calendaruserproxyloader.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -28,7 +28,7 @@
from twisted.internet.defer import inlineCallbacks
-from twext.log import Logger
+from twext.python.log import Logger
from twistedcaldav.config import config, fullServerPath
from twistedcaldav.directory import calendaruserproxy
Modified: CalendarServer/trunk/twistedcaldav/directory/digest.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/digest.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/directory/digest.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -23,7 +23,7 @@
from twext.web2.http_headers import split
from twext.web2.http_headers import tokenize
-from twext.log import Logger
+from twext.python.log import Logger
from twistedcaldav.memcacher import Memcacher
Modified: CalendarServer/trunk/twistedcaldav/directory/directory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/directory.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/directory/directory.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -38,7 +38,7 @@
from twext.web2.dav.auth import IPrincipalCredentials
from twisted.internet.defer import succeed
-from twext.log import LoggingMixIn
+from twext.python.log import LoggingMixIn
from twistedcaldav.config import config
from twistedcaldav.directory.idirectory import IDirectoryService, IDirectoryRecord
Modified: CalendarServer/trunk/twistedcaldav/directory/principal.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/principal.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/directory/principal.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -50,7 +50,7 @@
from twistedcaldav import carddavxml
-from twext.log import Logger
+from twext.python.log import Logger
from twistedcaldav.authkerb import NegotiateCredentials
from twistedcaldav.config import config
Modified: CalendarServer/trunk/twistedcaldav/directory/resourceinfo.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/resourceinfo.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/directory/resourceinfo.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -26,7 +26,7 @@
from twisted.internet.defer import inlineCallbacks, returnValue
-from twext.log import LoggingMixIn
+from twext.python.log import LoggingMixIn
from twistedcaldav.memcacher import Memcacher
from twistedcaldav.sql import AbstractSQLDatabase, db_prefix
Modified: CalendarServer/trunk/twistedcaldav/directory/wiki.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/wiki.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/directory/wiki.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -29,7 +29,7 @@
from twext.web2.http import HTTPError, StatusResponse
from twext.web2.auth.wrapper import UnauthorizedResponse
-from twext.log import Logger
+from twext.python.log import Logger
from twext.web2.dav.resource import TwistedACLInheritable
from twistedcaldav.config import config
Modified: CalendarServer/trunk/twistedcaldav/directory/xmlaccountsparser.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/xmlaccountsparser.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/directory/xmlaccountsparser.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -27,7 +27,7 @@
from twext.python.filepath import CachingFilePath as FilePath
-from twext.log import Logger
+from twext.python.log import Logger
from twistedcaldav.directory.directory import DirectoryService
Modified: CalendarServer/trunk/twistedcaldav/directory/xmlaugmentsparser.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/xmlaugmentsparser.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/directory/xmlaugmentsparser.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -26,7 +26,7 @@
from xml.parsers.expat import ExpatError
import types
-from twext.log import Logger
+from twext.python.log import Logger
log = Logger()
Modified: CalendarServer/trunk/twistedcaldav/directorybackedaddressbook.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directorybackedaddressbook.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/directorybackedaddressbook.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -24,7 +24,7 @@
-from twext.log import Logger
+from twext.python.log import Logger
from twisted.internet.defer import succeed, inlineCallbacks, maybeDeferred, returnValue
from twisted.python.reflect import namedClass
from twext.web2 import responsecode
Modified: CalendarServer/trunk/twistedcaldav/dropbox.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/dropbox.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/dropbox.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -28,7 +28,7 @@
from twext.web2.dav import davxml
from twext.web2.dav.resource import DAVResource, TwistedACLInheritable
-from twext.log import Logger
+from twext.python.log import Logger
from twistedcaldav.customxml import calendarserver_namespace
Modified: CalendarServer/trunk/twistedcaldav/extensions.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/extensions.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/extensions.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -56,7 +56,7 @@
from twext.web2.dav.method import prop_common
from twext.web2.dav.method.report import max_number_of_matches
-from twext.log import Logger, LoggingMixIn
+from twext.python.log import Logger, LoggingMixIn
from twistedcaldav import customxml
from twistedcaldav.customxml import calendarserver_namespace
Modified: CalendarServer/trunk/twistedcaldav/ical.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/ical.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/ical.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -45,7 +45,7 @@
from twext.web2.dav.util import allDataFromStream
from twext.web2.stream import IStream
-from twext.log import Logger
+from twext.python.log import Logger
from twistedcaldav.dateops import compareDateTime, normalizeToUTC, timeRangesOverlap,\
normalizeStartEndDuration, toString, normalizeForIndex, differenceDateTime
Modified: CalendarServer/trunk/twistedcaldav/index.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/index.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/index.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -44,7 +44,7 @@
from twisted.internet.defer import maybeDeferred, succeed
-from twext.log import Logger, LoggingMixIn
+from twext.python.log import Logger, LoggingMixIn
from twistedcaldav.ical import Component
from twistedcaldav.query import calendarquery
Modified: CalendarServer/trunk/twistedcaldav/localization.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/localization.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/localization.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -24,7 +24,7 @@
import codecs
from locale import normalize
-from twext.log import Logger
+from twext.python.log import Logger
from twistedcaldav.config import config
Modified: CalendarServer/trunk/twistedcaldav/mail.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/mail.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/mail.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -53,7 +53,7 @@
from twext.web2.http_headers import MimeType
-from twext.log import Logger, LoggingMixIn
+from twext.python.log import Logger, LoggingMixIn
from twistedcaldav import ical, caldavxml
from twistedcaldav import memcachepool
Modified: CalendarServer/trunk/twistedcaldav/memcachepool.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/memcachepool.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/memcachepool.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -19,7 +19,7 @@
from twisted.internet.defer import Deferred, fail
from twisted.internet.protocol import ReconnectingClientFactory
-from twext.log import LoggingMixIn
+from twext.python.log import LoggingMixIn
from twext.protocols.memcache import MemCacheProtocol, NoSuchCommand
class PooledMemCacheProtocol(MemCacheProtocol):
Modified: CalendarServer/trunk/twistedcaldav/memcacheprops.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/memcacheprops.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/memcacheprops.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -34,7 +34,7 @@
from memcacheclient import ClientFactory as MemcacheClientFactory, MemcacheError, TokenMismatchError
-from twext.log import LoggingMixIn, Logger
+from twext.python.log import LoggingMixIn, Logger
from twext.python.filepath import CachingFilePath as FilePath
from twext.web2 import responsecode
Modified: CalendarServer/trunk/twistedcaldav/memcacher.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/memcacher.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/memcacher.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -20,7 +20,7 @@
from twisted.internet.defer import succeed
-from twext.log import LoggingMixIn
+from twext.python.log import LoggingMixIn
from twistedcaldav.memcachepool import CachePoolUserMixIn
from twistedcaldav.config import config
Modified: CalendarServer/trunk/twistedcaldav/method/copymove.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/copymove.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/method/copymove.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -30,7 +30,7 @@
from twext.web2.dav.util import parentForURL
from twext.web2.http import StatusResponse, HTTPError
-from twext.log import Logger
+from twext.python.log import Logger
from twistedcaldav.caldavxml import caldav_namespace
from twistedcaldav.method.put_common import StoreCalendarObjectResource
Modified: CalendarServer/trunk/twistedcaldav/method/copymove_contact.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/copymove_contact.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/method/copymove_contact.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -33,7 +33,7 @@
from twistedcaldav.carddavxml import carddav_namespace
from twistedcaldav.method.put_addressbook_common import StoreAddressObjectResource
from twistedcaldav.resource import isAddressBookCollectionResource
-from twext.log import Logger
+from twext.python.log import Logger
log = Logger()
Modified: CalendarServer/trunk/twistedcaldav/method/delete.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/delete.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/method/delete.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -20,7 +20,7 @@
__all__ = ["http_DELETE"]
-from twext.log import Logger
+from twext.python.log import Logger
from twisted.internet.defer import inlineCallbacks, returnValue
from twext.web2 import responsecode
Modified: CalendarServer/trunk/twistedcaldav/method/delete_common.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/delete_common.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/method/delete_common.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -28,7 +28,7 @@
from twext.web2.dav.util import joinURL
from twext.web2.http import HTTPError, StatusResponse
-from twext.log import Logger
+from twext.python.log import Logger
from twext.web2.dav.davxml import ErrorResponse
from twistedcaldav.caldavxml import caldav_namespace, ScheduleTag
Modified: CalendarServer/trunk/twistedcaldav/method/mkcalendar.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/mkcalendar.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/method/mkcalendar.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -29,7 +29,7 @@
from twext.web2.dav.util import parentForURL
from twext.web2.http import HTTPError, StatusResponse
-from twext.log import Logger
+from twext.python.log import Logger
from twext.web2.dav.davxml import ErrorResponse
from twistedcaldav import caldavxml
Modified: CalendarServer/trunk/twistedcaldav/method/propfind.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/propfind.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/method/propfind.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -36,7 +36,7 @@
from twext.web2.dav.http import MultiStatusResponse, statusForFailure
from twext.web2.dav.util import normalizeURL, davXMLFromStream
-from twext.log import Logger
+from twext.python.log import Logger
log = Logger()
Modified: CalendarServer/trunk/twistedcaldav/method/put.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/put.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/method/put.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -25,7 +25,7 @@
from twext.web2.dav.util import allDataFromStream, parentForURL
from twext.web2.http import HTTPError, StatusResponse
-from twext.log import Logger
+from twext.python.log import Logger
from twext.web2.dav.davxml import ErrorResponse
from twistedcaldav.caldavxml import caldav_namespace
Modified: CalendarServer/trunk/twistedcaldav/method/put_addressbook_common.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/put_addressbook_common.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/method/put_addressbook_common.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -50,7 +50,7 @@
from twistedcaldav.instance import TooManyInstancesError
from twistedcaldav.vcard import Component
from twistedcaldav.vcardindex import ReservationError
-from twext.log import Logger
+from twext.python.log import Logger
#from twistedcaldav.scheduling.implicit import ImplicitScheduler
log = Logger()
Modified: CalendarServer/trunk/twistedcaldav/method/put_common.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/put_common.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/method/put_common.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -44,7 +44,7 @@
from twext.web2.iweb import IResponse
from twext.web2.stream import MemoryStream
-from twext.log import Logger
+from twext.python.log import Logger
from twext.web2.dav.davxml import ErrorResponse
from twistedcaldav.config import config
Modified: CalendarServer/trunk/twistedcaldav/method/report.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/report.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/method/report.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -35,7 +35,7 @@
from twext.web2.dav.element.parser import lookupElement
from twext.web2.dav.util import davXMLFromStream
-from twext.log import Logger
+from twext.python.log import Logger
from twext.web2.dav.davxml import ErrorResponse
from twistedcaldav import caldavxml
Modified: CalendarServer/trunk/twistedcaldav/method/report_calquery.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/report_calquery.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/method/report_calquery.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -22,7 +22,7 @@
import urllib
-from twext.log import Logger
+from twext.python.log import Logger
from twext.web2.dav.davxml import ErrorResponse
from twisted.internet.defer import succeed, inlineCallbacks, returnValue
Modified: CalendarServer/trunk/twistedcaldav/method/report_common.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/report_common.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/method/report_common.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -51,7 +51,7 @@
from twext.web2.dav.resource import AccessDeniedError
from twext.web2.http import HTTPError
-from twext.log import Logger
+from twext.python.log import Logger
from twistedcaldav import caldavxml
from twistedcaldav import carddavxml
Modified: CalendarServer/trunk/twistedcaldav/method/report_freebusy.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/report_freebusy.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/method/report_freebusy.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -20,7 +20,7 @@
__all__ = ["report_urn_ietf_params_xml_ns_caldav_free_busy_query"]
-from twext.log import Logger
+from twext.python.log import Logger
from twext.web2.dav.davxml import ErrorResponse
from twisted.internet.defer import inlineCallbacks, returnValue
Modified: CalendarServer/trunk/twistedcaldav/method/report_multiget.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/report_multiget.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/method/report_multiget.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -22,7 +22,7 @@
from urllib import unquote
-from twext.log import Logger
+from twext.python.log import Logger
from twext.web2.dav.davxml import ErrorResponse
from twisted.internet.defer import inlineCallbacks, returnValue
Modified: CalendarServer/trunk/twistedcaldav/method/report_sync_collection.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/method/report_sync_collection.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/method/report_sync_collection.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -20,7 +20,7 @@
__all__ = ["report_DAV__sync_collection"]
-from twext.log import Logger
+from twext.python.log import Logger
from twext.web2.dav.davxml import ErrorResponse, SyncToken
from twisted.internet.defer import inlineCallbacks, returnValue
Modified: CalendarServer/trunk/twistedcaldav/notify.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/notify.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/notify.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -39,7 +39,7 @@
from zope.interface import Interface, implements
-from twext.log import LoggingMixIn
+from twext.python.log import LoggingMixIn
from twisted.internet.protocol import ReconnectingClientFactory, ServerFactory
from twisted.internet.ssl import ClientContextFactory
Modified: CalendarServer/trunk/twistedcaldav/partitions.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/partitions.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/partitions.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -14,7 +14,7 @@
# limitations under the License.
##
-from twext.log import Logger
+from twext.python.log import Logger
from twext.python.plistlib import readPlist
from twistedcaldav.client.pool import installPool
Modified: CalendarServer/trunk/twistedcaldav/pdmonster.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/pdmonster.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/pdmonster.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -4,7 +4,7 @@
from twext.web2.resource import WrapperResource
-from twext.log import LoggingMixIn
+from twext.python.log import LoggingMixIn
class PDClientAddressWrapper(WrapperResource, LoggingMixIn):
def __init__(self, resource, socket, directory):
Modified: CalendarServer/trunk/twistedcaldav/resource.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/resource.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/resource.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -35,7 +35,7 @@
from zope.interface import implements
-from twext.log import LoggingMixIn
+from twext.python.log import LoggingMixIn
from twext.web2.dav.davxml import ErrorResponse, SyncCollection
from twisted.internet import reactor
Modified: CalendarServer/trunk/twistedcaldav/scheduling/addressmapping.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/scheduling/addressmapping.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/scheduling/addressmapping.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -16,7 +16,7 @@
from twisted.internet.defer import inlineCallbacks, returnValue
-from twext.log import Logger
+from twext.python.log import Logger
from twistedcaldav.config import config
from twistedcaldav.memcacher import Memcacher
Modified: CalendarServer/trunk/twistedcaldav/scheduling/caldav.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/scheduling/caldav.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/scheduling/caldav.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -21,7 +21,7 @@
except ImportError:
from md5 import new as md5
-from twext.log import Logger
+from twext.python.log import Logger
from twext.web2.dav.davxml import ErrorResponse
from twisted.internet.defer import inlineCallbacks, returnValue
Modified: CalendarServer/trunk/twistedcaldav/scheduling/cuaddress.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/scheduling/cuaddress.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/scheduling/cuaddress.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -14,7 +14,7 @@
# limitations under the License.
##
-from twext.log import Logger
+from twext.python.log import Logger
from twistedcaldav.scheduling.delivery import DeliveryService
Modified: CalendarServer/trunk/twistedcaldav/scheduling/delivery.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/scheduling/delivery.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/scheduling/delivery.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -16,7 +16,7 @@
import re
-from twext.log import Logger
+from twext.python.log import Logger
from twistedcaldav.config import config
Modified: CalendarServer/trunk/twistedcaldav/scheduling/icaldiff.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/scheduling/icaldiff.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/scheduling/icaldiff.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -14,7 +14,7 @@
# limitations under the License.
##
-from twext.log import Logger
+from twext.python.log import Logger
from twistedcaldav.config import config
from twistedcaldav.dateops import normalizeToUTC, toString,\
Modified: CalendarServer/trunk/twistedcaldav/scheduling/imip.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/scheduling/imip.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/scheduling/imip.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -17,7 +17,7 @@
from twisted.python.failure import Failure
from twisted.internet.defer import inlineCallbacks, returnValue
-from twext.log import Logger
+from twext.python.log import Logger
from twext.web2.dav.davxml import ErrorResponse
from twext.web2 import responsecode
Modified: CalendarServer/trunk/twistedcaldav/scheduling/implicit.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/scheduling/implicit.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/scheduling/implicit.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -14,7 +14,7 @@
# limitations under the License.
##
-from twext.log import Logger
+from twext.python.log import Logger
from twext.web2.dav.davxml import ErrorResponse
from twisted.internet.defer import inlineCallbacks, returnValue
Modified: CalendarServer/trunk/twistedcaldav/scheduling/ischedule.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/scheduling/ischedule.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/scheduling/ischedule.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -30,7 +30,7 @@
from twext.web2.http_headers import MimeType
from twext.web2.stream import MemoryStream
-from twext.log import Logger, logLevels
+from twext.python.log import Logger, logLevels
from twext.internet.ssl import ChainingOpenSSLContextFactory
from twext.web2.dav.davxml import ErrorResponse
Modified: CalendarServer/trunk/twistedcaldav/scheduling/ischeduleservers.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/scheduling/ischeduleservers.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/scheduling/ischeduleservers.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -16,7 +16,7 @@
from twext.python.filepath import CachingFilePath as FilePath
-from twext.log import Logger
+from twext.python.log import Logger
from twistedcaldav.config import config, fullServerPath
from twistedcaldav.scheduling.delivery import DeliveryService
Modified: CalendarServer/trunk/twistedcaldav/scheduling/itip.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/scheduling/itip.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/scheduling/itip.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -35,7 +35,7 @@
from vobject.icalendar import utc
from vobject.icalendar import dateTimeToString
-from twext.log import Logger
+from twext.python.log import Logger
from twistedcaldav.config import config
from twistedcaldav.dateops import normalizeToUTC, toString
Modified: CalendarServer/trunk/twistedcaldav/scheduling/processing.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/scheduling/processing.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/scheduling/processing.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -20,7 +20,7 @@
from vobject.icalendar import utc
-from twext.log import Logger
+from twext.python.log import Logger
from twisted.internet import reactor
from twisted.internet.defer import inlineCallbacks, returnValue
Modified: CalendarServer/trunk/twistedcaldav/scheduling/scheduler.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/scheduling/scheduler.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/scheduling/scheduler.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -14,7 +14,7 @@
# limitations under the License.
##
-from twext.log import Logger, LoggingMixIn
+from twext.python.log import Logger, LoggingMixIn
from twext.web2.dav.davxml import ErrorResponse
from twisted.internet.defer import inlineCallbacks, returnValue
Modified: CalendarServer/trunk/twistedcaldav/sql.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/sql.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/sql.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -31,7 +31,7 @@
except ImportError:
from pysqlite2 import dbapi2 as sqlite
-from twext.log import Logger
+from twext.python.log import Logger
log = Logger()
Modified: CalendarServer/trunk/twistedcaldav/static.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/static.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/static.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -44,7 +44,7 @@
from urlparse import urlsplit
from uuid import uuid4
-from twext.log import Logger
+from twext.python.log import Logger
from twext.web2.dav.davxml import ErrorResponse
from twisted.internet.defer import fail, succeed, inlineCallbacks, returnValue, maybeDeferred
Modified: CalendarServer/trunk/twistedcaldav/stdconfig.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/stdconfig.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/stdconfig.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -23,8 +23,8 @@
from twext.web2.dav.resource import TwistedACLInheritable
from twext.python.plistlib import PlistParser
-from twext.log import Logger, InvalidLogLevelError
-from twext.log import clearLogLevels, setLogLevelForNamespace
+from twext.python.log import Logger, InvalidLogLevelError
+from twext.python.log import clearLogLevels, setLogLevelForNamespace
from twistedcaldav.config import ConfigProvider, ConfigurationError
from twistedcaldav.config import config, _mergeData, fullServerPath
Modified: CalendarServer/trunk/twistedcaldav/test/test_config.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/test/test_config.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/test/test_config.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -15,7 +15,7 @@
##
from twext.python.plistlib import writePlist
-from twext.log import logLevelForNamespace
+from twext.python.log import logLevelForNamespace
from twistedcaldav.config import config, ConfigDict
from twistedcaldav.static import CalDAVFile
Modified: CalendarServer/trunk/twistedcaldav/test/test_log.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/test/test_log.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/test/test_log.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -18,7 +18,7 @@
from twisted.python import log as twistedLogging
-from twext.log import *
+from twext.python.log import *
from twistedcaldav.test.util import TestCase
Modified: CalendarServer/trunk/twistedcaldav/timezones.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/timezones.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/timezones.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -20,7 +20,7 @@
from vobject.icalendar import getTzid
from vobject.icalendar import registerTzid
-from twext.log import Logger
+from twext.python.log import Logger
from twistedcaldav.ical import Component
Modified: CalendarServer/trunk/twistedcaldav/upgrade.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/upgrade.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/upgrade.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -24,7 +24,7 @@
from twext.web2.dav.fileop import rmdir
from twext.web2.dav import davxml
-from twext.log import Logger
+from twext.python.log import Logger
from twistedcaldav.directory.directory import DirectoryService
#from twistedcaldav.directory.resourceinfo import ResourceInfoDatabase
Modified: CalendarServer/trunk/twistedcaldav/util.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/util.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/util.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -25,7 +25,7 @@
from twisted.internet import ssl, reactor
from twisted.web import client
from twisted.python import failure
-from twext.log import LoggingMixIn
+from twext.python.log import LoggingMixIn
##
# getNCPU
Modified: CalendarServer/trunk/twistedcaldav/vcardindex.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/vcardindex.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/twistedcaldav/vcardindex.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -43,7 +43,7 @@
from twistedcaldav.sql import db_prefix
from twistedcaldav.vcard import Component
-from twext.log import Logger, LoggingMixIn
+from twext.python.log import Logger, LoggingMixIn
from twistedcaldav.config import config
from twistedcaldav.memcachepool import CachePoolUserMixIn
Modified: CalendarServer/trunk/txcaldav/calendarstore/file.py
===================================================================
--- CalendarServer/trunk/txcaldav/calendarstore/file.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/txcaldav/calendarstore/file.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -32,7 +32,7 @@
from twext.python.filepath import CachingFilePath as FilePath
from twisted.internet.defer import inlineCallbacks
-from twext.log import LoggingMixIn
+from twext.python.log import LoggingMixIn
from twext.python.icalendar import Component as iComponent
from twext.python.icalendar import InvalidICalendarDataError
Modified: CalendarServer/trunk/txdav/propertystore/base.py
===================================================================
--- CalendarServer/trunk/txdav/propertystore/base.py 2010-02-20 05:58:41 UTC (rev 5156)
+++ CalendarServer/trunk/txdav/propertystore/base.py 2010-02-20 14:16:52 UTC (rev 5157)
@@ -24,7 +24,7 @@
from zope.interface import implements
-from twext.log import LoggingMixIn
+from twext.python.log import LoggingMixIn
from txdav.idav import IPropertyStore, IPropertyName
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20100220/c1ae6927/attachment-0001.html>
More information about the calendarserver-changes
mailing list