[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