[CalendarServer-changes] [2170] CalendarServer/branches/users/cdaboo/better-logging-2152
source_changes at macosforge.org
source_changes at macosforge.org
Thu Feb 21 12:19:50 PST 2008
Revision: 2170
http://trac.macosforge.org/projects/calendarserver/changeset/2170
Author: cdaboo at apple.com
Date: 2008-02-21 12:19:48 -0800 (Thu, 21 Feb 2008)
Log Message:
-----------
Revised logging support so that a default class name and system id can be specified.
Modified Paths:
--------------
CalendarServer/branches/users/cdaboo/better-logging-2152/conf/logger.plist
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/authkerb.py
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/caldavxml.py
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/cluster.py
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/directory/appleopendirectory.py
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/directory/digest.py
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/directory/directory.py
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/directory/principal.py
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/dropbox.py
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/extensions.py
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/ical.py
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/index.py
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/itip.py
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/logger.py
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/logging.py
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/copymove.py
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/mkcalendar.py
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/put.py
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/put_common.py
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/report.py
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/report_calquery.py
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/report_common.py
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/report_freebusy.py
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/report_multiget.py
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/pdmonster.py
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/root.py
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/schedule.py
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/sql.py
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/static.py
CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/tap.py
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/conf/logger.plist
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/conf/logger.plist 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/conf/logger.plist 2008-02-21 20:19:48 UTC (rev 2170)
@@ -28,17 +28,59 @@
<key>Security</key>
<string>warning</string>
- <!-- To track down auto-response issues enable this. -->
+ <!-- Directory provisioning. -->
<!--
+ <key>Directory</key>
+ <string>warning</string>
+ -->
+
+ <!-- HTTP method processing. -->
+ <!--
+ <key>http</key>
+ <string>warning</string>
+ -->
+
+ <!-- Writing/indexing calendar data. -->
+ <!--
+ <key>Store Resource</key>
+ <string>warning</string>
+ -->
+
+ <!-- Dropbox support. -->
+ <!--
+ <key>dropbox</key>
+ <string>warning</string>
+ -->
+
+ <!-- iCalendar parsing/handling. -->
+ <!--
+ <key>iCalendar</key>
+ <string>warning</string>
+ -->
+
+ <!-- iTIP auto-processing. -->
+ <!--
<key>iTIP</key>
<string>info</string>
-->
- <!-- To track down iTIP messaging issues enable this. -->
+ <!-- To track down CalDAV scheduling issues enable this. -->
<!--
- <key>CalDAV Outbox POST</key>
+ <key>Outbox</key>
<string>info</string>
-->
+
+ <!-- Log rotation etc. -->
+ <!--
+ <key>Logging</key>
+ <string>warning</string>
+ -->
+
+ <!-- To track down issues with the databases. -->
+ <!--
+ <key>SQL</key>
+ <string>info</string>
+ -->
</dict>
<!-- Per User Accounting -->
@@ -54,5 +96,9 @@
<array></array>
</dict>
+ <!-- Whether class names should be displayed in the logs. -->
+ <key>Display Class Names</key>
+ <false/>
+
</dict>
</plist>
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/authkerb.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/authkerb.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/authkerb.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -54,6 +54,8 @@
implements(ICredentialFactory)
+ log = logger.getInstance(classid="KerberosCredentialFactoryBase", id=("Security",))
+
def __init__(self, principal=None, type=None, hostname=None):
"""
@@ -75,7 +77,7 @@
try:
principal = kerberos.getServerPrincipalDetails(type, hostname)
except kerberos.KrbError, ex:
- logger.err("getServerPrincipalDetails: %s" % (ex[0],), id=(self, "Security",))
+ self.log.err("getServerPrincipalDetails: %s" % (ex[0],))
raise ValueError('Authentication System Failure: %s' % (ex[0],))
try:
@@ -85,12 +87,12 @@
service = splits[0].upper()
realm = splits[1]
except IndexError:
- logger.err("Invalid Kerberos principal: %s" % (principal,), id=(self, "Security",))
+ self.log.err("Invalid Kerberos principal: %s" % (principal,))
raise ValueError('Authentication System Failure: Invalid Kerberos principal: %s' % (principal,))
self.service = "%s@%s" % (servicetype, service,)
self.realm = realm
- logger.debug("Service: %s Realm: %s" % (self.service, self.realm,), id=(self, "Security",))
+ self.log.debug("Service: %s Realm: %s" % (self.service, self.realm,))
class BasicKerberosCredentials(credentials.UsernamePassword):
"""
@@ -160,6 +162,8 @@
credentialInterfaces = (IPrincipalCredentials,)
+ log = logger.getInstance(classid="BasicKerberosCredentialsChecker", id=("Security",))
+
def requestAvatarId(self, credentials):
# If there is no calendar principal URI then the calendar user is disabled.
@@ -170,7 +174,7 @@
try:
kerberos.checkPassword(creds.username, creds.password, creds.service, creds.default_realm)
except kerberos.BasicAuthError, ex:
- logger.err("%s" % (ex[0],), id=(self, "Security",))
+ self.log.err("%s" % (ex[0],))
raise error.UnauthorizedLogin("Bad credentials for: %s (%s: %s)" % (pcreds.authnURI, ex[0], ex[1],))
else:
return succeed((pcreds.authnURI, pcreds.authzURI,))
@@ -195,6 +199,8 @@
scheme = 'negotiate'
+ log = logger.getInstance(classid="NegotiateCredentialFactory", id=("Security",))
+
def __init__(self, principal=None, type=None, hostname=None):
"""
@@ -218,18 +224,18 @@
try:
_ignore_result, context = kerberos.authGSSServerInit(self.service);
except kerberos.GSSError, ex:
- logger.debug("authGSSServerInit: %s(%s)" % (ex[0][0], ex[1][0],), id=(self, "Security",))
+ self.log.debug("authGSSServerInit: %s(%s)" % (ex[0][0], ex[1][0],))
raise error.LoginFailed('Authentication System Failure: %s(%s)' % (ex[0][0], ex[1][0],))
# Do the GSSAPI step and get response and username
try:
kerberos.authGSSServerStep(context, base64data);
except kerberos.GSSError, ex:
- logger.debug("authGSSServerStep: %s(%s)" % (ex[0][0], ex[1][0],), id=(self, "Security",))
+ self.log.debug("authGSSServerStep: %s(%s)" % (ex[0][0], ex[1][0],))
kerberos.authGSSServerClean(context)
raise error.UnauthorizedLogin('Bad credentials: %s(%s)' % (ex[0][0], ex[1][0],))
except kerberos.KrbError, ex:
- logger.debug("authGSSServerStep: %s" % (ex[0],), id=(self, "Security",))
+ self.log.debug("authGSSServerStep: %s" % (ex[0],))
kerberos.authGSSServerClean(context)
raise error.UnauthorizedLogin('Bad credentials: %s' % (ex[0],))
@@ -246,7 +252,7 @@
# We currently do not support cross-realm authentication, so we
# must verify that the realm we got exactly matches the one we expect.
if realmname != self.realm:
- logger.err("authGSSServer Realms do not match: %s vs %s" % (realmname, self.realm,), id=(self, "Security",))
+ self.log.err("authGSSServer Realms do not match: %s vs %s" % (realmname, self.realm,))
kerberos.authGSSServerClean(context)
raise error.UnauthorizedLogin('Bad credentials: mismatched realm')
@@ -255,7 +261,7 @@
try:
kerberos.authGSSServerClean(context);
except kerberos.GSSError, ex:
- logger.debug("authGSSServerClean: %s" % (ex[0][0], ex[1][0],), id=(self, "Security",))
+ self.log.debug("authGSSServerClean: %s" % (ex[0][0], ex[1][0],))
raise error.LoginFailed('Authentication System Failure %s(%s)' % (ex[0][0], ex[1][0],))
# If we successfully decoded and verified the Kerberos credentials we need to add the Kerberos
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/caldavxml.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/caldavxml.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/caldavxml.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -954,6 +954,8 @@
Limits a search to only the chosen component types.
(CalDAV-access-09, section 9.6.1)
"""
+ log = logger.getInstance(classid=("ComponentFilter",))
+
name = "comp-filter"
allowed_children = {
@@ -1051,32 +1053,32 @@
if level == 0:
# Must have VCALENDAR at the top
if (self.filter_name != "VCALENDAR") or timerange:
- logger.err("Top-level comp-filter must be VCALENDAR, instead: %s" % (self.filter_name,), id=(self, "caldav",))
+ self.log.err("Top-level comp-filter must be VCALENDAR, instead: %s" % (self.filter_name,))
return False
elif level == 1:
# Dissallow VCALENDAR, VALARM, STANDARD, DAYLIGHT, AVAILABLE at the top, everything else is OK
if self.filter_name in ("VCALENDAR", "VALARM", "STANDARD", "DAYLIGHT", "AVAILABLE"):
- logger.err("comp-filter wrong component type: %s" % (self.filter_name,), id=(self, "caldav",))
+ self.log.err("comp-filter wrong component type: %s" % (self.filter_name,))
return False
# time-range only on VEVENT, VTODO, VJOURNAL, VFREEBUSY, VAVAILABILITY
if timerange and self.filter_name not in ("VEVENT", "VTODO", "VJOURNAL", "VFREEBUSY", "VAVAILABILITY"):
- logger.err("time-range cannot be used with component %s" % (self.filter_name,), id=(self, "caldav",))
+ self.log.err("time-range cannot be used with component %s" % (self.filter_name,))
return False
elif level == 2:
# Dissallow VCALENDAR, VTIMEZONE, VEVENT, VTODO, VJOURNAL, VFREEBUSY, VAVAILABILITY at the top, everything else is OK
if (self.filter_name in ("VCALENDAR", "VTIMEZONE", "VEVENT", "VTODO", "VJOURNAL", "VFREEBUSY", "VAVAILABILITY")):
- logger.err("comp-filter wrong sub-component type: %s" % (self.filter_name,), id=(self, "caldav",))
+ self.log.err("comp-filter wrong sub-component type: %s" % (self.filter_name,))
return False
# time-range only on VALARM, AVAILABLE
if timerange and self.filter_name not in ("VALARM", "AVAILABLE",):
- logger.err("time-range cannot be used with sub-component %s" % (self.filter_name,), id=(self, "caldav",))
+ self.log.err("time-range cannot be used with sub-component %s" % (self.filter_name,))
return False
else:
# Dissallow all std iCal components anywhere else
if (self.filter_name in ("VCALENDAR", "VTIMEZONE", "VEVENT", "VTODO", "VJOURNAL", "VFREEBUSY", "VALARM", "STANDARD", "DAYLIGHT", "AVAILABLE")) or timerange:
- logger.err("comp-filter wrong standard component type: %s" % (self.filter_name,), id=(self, "caldav",))
+ self.log.err("comp-filter wrong standard component type: %s" % (self.filter_name,))
return False
# Test each property
@@ -1115,6 +1117,8 @@
Limits a search to specific properties.
(CalDAV-access-09, section 9.6.2)
"""
+ log = logger.getInstance(classid=("PropertyFilter",))
+
name = "prop-filter"
allowed_children = {
@@ -1159,7 +1163,7 @@
# time-range only on COMPLETED, CREATED, DTSTAMP, LAST-MODIFIED
if timerange and self.filter_name not in ("COMPLETED", "CREATED", "DTSTAMP", "LAST-MODIFIED"):
- logger.err("time-range cannot be used with property %s" % (self.filter_name,), id=(self, "caldav",))
+ self.log.err("time-range cannot be used with property %s" % (self.filter_name,))
return False
# Test the time-range
@@ -1339,6 +1343,8 @@
Specifies a time for testing components against.
(CalDAV-access-09, section 9.8)
"""
+ log = logger.getInstance(classid=("TimeRange",))
+
name = "time-range"
def __init__(self, *children, **attributes):
@@ -1362,16 +1368,16 @@
"""
if not isinstance(self.start, datetime.datetime):
- logger.err("start attribute in <time-range> is not a date-time: %s" % (self.start,), id=(self, "caldav",))
+ self.log.err("start attribute in <time-range> is not a date-time: %s" % (self.start,))
return False
if not isinstance(self.end, datetime.datetime):
- logger.err("end attribute in <time-range> is not a date-time: %s" % (self.end,), id=(self, "caldav",))
+ self.log.err("end attribute in <time-range> is not a date-time: %s" % (self.end,))
return False
if self.start.tzinfo != utc:
- logger.err("start attribute in <time-range> is not UTC: %s" % (self.start,), id=(self, "caldav",))
+ self.log.err("start attribute in <time-range> is not UTC: %s" % (self.start,))
return False
if self.end.tzinfo != utc:
- logger.err("end attribute in <time-range> is not UTC: %s" % (self.start,), id=(self, "caldav",))
+ self.log.err("end attribute in <time-range> is not UTC: %s" % (self.start,))
return False
# No other tests
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/cluster.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/cluster.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/cluster.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -27,6 +27,8 @@
from twistedcaldav.util import getNCPU
+log = logger.getInstance(classid="cluster", id=("Startup",))
+
serviceTemplate = """
<service name="%(name)s">
%(listeningInterfaces)s
@@ -150,12 +152,15 @@
if config.MultiProcess['ProcessCount'] == 0:
try:
config.MultiProcess['ProcessCount'] = getNCPU()
- logger.info("%d processors found, configuring %d processes." % (
+ log.info(
+ "%d processors found, configuring %d processes." % (
config.MultiProcess['ProcessCount'],
- config.MultiProcess['ProcessCount']), id="Startup")
+ config.MultiProcess['ProcessCount']
+ )
+ )
except NotImplementedError, err:
- logger.warn('Could not autodetect number of CPUs: %s' % (err,), id="Startup")
+ log.warn('Could not autodetect number of CPUs: %s' % (err,))
config.MultiProcess['ProcessCount'] = 1
if config.MultiProcess['ProcessCount'] > 1:
@@ -272,7 +277,7 @@
os.write(fd, pdconfig)
os.close(fd)
- logger.info("Adding pydirector service with configuration: %s" % (fname,), id="Startup")
+ log.info("Adding pydirector service with configuration: %s" % (fname,))
monitor.addProcess('pydir', [sys.executable,
config.PythonDirector['pydir'],
@@ -293,7 +298,7 @@
parentEnv = {'PYTHONPATH': os.environ.get('PYTHONPATH', ''),}
- logger.info("Adding pydirector service with configuration: %s" % (config.PythonDirector['ConfigFile'],), id="Startup")
+ log.info("Adding pydirector service with configuration: %s" % (config.PythonDirector['ConfigFile'],))
service.addProcess('pydir', [sys.executable,
config.PythonDirector['pydir'],
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/directory/appleopendirectory.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/directory/appleopendirectory.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/directory/appleopendirectory.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -54,6 +54,8 @@
"""
baseGUID = "891F8321-ED02-424C-BA72-89C32F215C1E"
+ log = logger.getInstance(classid="OpenDirectoryService", id=("Directory",))
+
def __repr__(self):
return "<%s %r: %r>" % (self.__class__.__name__, self.realmName, self.node)
@@ -69,7 +71,7 @@
try:
directory = opendirectory.odInit(node)
except opendirectory.ODError, e:
- logger.err("Open Directory (node=%s) Initialization error: %s" % (node, e), id=(self, "Startup", "Directory",))
+ self.log.err("Open Directory (node=%s) Initialization error: %s" % (node, e), id="Startup")
raise
self.realmName = node
@@ -88,7 +90,7 @@
try:
self._lookupVHostRecord()
except Exception, e:
- logger.err("Unable to locate virtual host record: %s" % (e,), id=(self, "Startup", "Directory",))
+ self.log.err("Unable to locate virtual host record: %s" % (e,), id="Startup")
raise
if os.path.exists(serverPreferences):
@@ -97,7 +99,7 @@
self.isWorkgroupServer = serverInfo.get('ServiceConfig', {}).get('IsWorkgroupServer', False)
if self.isWorkgroupServer:
- logger.info("Enabling Workgroup Server compatibility mode", id=(self, "Startup", "Directory",))
+ self.log.info("Enabling Workgroup Server compatibility mode", id="Startup")
for recordType in self.recordTypes():
self.recordsForType(recordType)
@@ -133,9 +135,8 @@
)
if not result:
- logger.err(
- "Couldn't find group %s when trying to expand nested groups."
- % (groupGUID,), id=(self, "Directory",)
+ self.log.err(
+ "Couldn't find group %s when trying to expand nested groups." % (groupGUID,)
)
continue
@@ -215,16 +216,19 @@
# Log all the matching records
for key, value in self.computerRecords.iteritems():
_ignore_recordname, enabled, servicetag = value
- logger.info("Matched Directory record: %s with ServicesLocator: %s, state: %s" % (
- key,
- servicetag,
- {True:"enabled", False:"disabled"}[enabled]
- ), id=(self, "Startup", "Directory",))
+ self.log.info(
+ "Matched Directory record: %s with ServicesLocator: %s, state: %s" % (
+ key,
+ servicetag,
+ {True:"enabled", False:"disabled"}[enabled]
+ ),
+ id=("Startup",)
+ )
# Log all the enabled service tags - or generate an error if there are none
if self.servicetags:
for tag in self.servicetags:
- logger.info("Enabled ServicesLocator: %s" % (tag,), id=(self, "Startup", "Directory",))
+ self.log.info("Enabled ServicesLocator: %s" % (tag,), id=("Startup",))
else:
raise OpenDirectoryInitError(
"Open Directory (node=%s) no /Computers records with an enabled and valid "
@@ -247,10 +251,11 @@
plist = readPlistFromString(plist)
vhosts = plist.get("com.apple.macosxserver.virtualhosts", None)
if not vhosts:
- logger.err(
+ self.log.err(
"Open Directory (node=%s) %s record does not have a "
"com.apple.macosxserver.virtualhosts in its apple-serviceinfo attribute value"
- % (self.realmName, recordlocation,), id=(self, "Startup", "Directory",)
+ % (self.realmName, recordlocation,),
+ id=("Startup",)
)
return False
@@ -271,10 +276,11 @@
# Get host name
hostname = vhosts[hostguid].get("hostname", None)
if not hostname:
- logger.err(
+ self.log.err(
"Open Directory (node=%s) %s record does not have "
"any host name in its apple-serviceinfo attribute value"
- % (self.realmName, recordlocation, ), id=(self, "Startup", "Directory",)
+ % (self.realmName, recordlocation, ),
+ id=("Startup",)
)
return False
if hostname != vhostname:
@@ -285,20 +291,22 @@
# ignore the details themselves (scheme/port) as we use our own config for that.
hostdetails = vhosts[hostguid].get("hostDetails", None)
if not hostdetails:
- logger.err(
+ self.log.err(
"Open Directory (node=%s) %s record does not have "
"any host details in its apple-serviceinfo attribute value"
- % (self.realmName, recordlocation, ), id=(self, "Startup", "Directory",)
+ % (self.realmName, recordlocation, ),
+ id=("Startup",)
)
return False
# Look at the service data
serviceInfos = vhosts[hostguid].get("serviceInfo", None)
if not serviceInfos or not serviceInfos.has_key("calendar"):
- logger.err(
+ self.log.err(
"Open Directory (node=%s) %s record does not have a "
"calendar service in its apple-serviceinfo attribute value"
- % (self.realmName, recordlocation), id=(self, "Startup", "Directory",)
+ % (self.realmName, recordlocation),
+ id=("Startup",)
)
return False
serviceInfo = serviceInfos["calendar"]
@@ -372,9 +380,9 @@
def onError(f):
storage["status"] = "stale" # Keep trying
- logger.err(
+ self.log.err(
"Unable to load records of type %s from OpenDirectory due to unexpected error: %s"
- % (recordType, f), id=(self, "Directory",)
+ % (recordType, f)
)
d = deferToThread(self.reloadCache, recordType)
@@ -420,18 +428,18 @@
self.reloadCache(recordType, guid=guid)
record = lookup()
if record is not None:
- logger.info("Faulted record with GUID %s into %s record cache" % (guid, recordType), id=(self, "Directory",))
+ self.log.info("Faulted record with GUID %s into %s record cache" % (guid, recordType))
break
else:
- logger.info("Unable to find any record with GUID %s" % (guid,), id=(self, "Directory",))
+ self.log.info("Unable to find any record with GUID %s" % (guid,))
return record
def reloadCache(self, recordType, shortName=None, guid=None):
if shortName:
- logger.info("Faulting record %s into %s record cache" % (shortName, recordType,), id=(self, "Directory",))
+ self.log.info("Faulting record %s into %s record cache" % (shortName, recordType,))
elif guid is None:
- logger.info("Reloading %s record cache" % (recordType,), id=(self, "Directory",))
+ self.log.info("Reloading %s record cache" % (recordType,))
results = self._queryDirectory(recordType, shortName=shortName, guid=guid)
@@ -457,14 +465,14 @@
if not value.get(dsattributes.kDSNAttrServicesLocator):
if recordType == DirectoryService.recordType_groups:
enabledForCalendaring = False
- logger.debug(
+ self.log.debug(
"Group %s is not enabled for calendaring but may be used in ACLs"
- % (recordShortName,), id=(self, "Directory",)
+ % (recordShortName,)
)
else:
- logger.err(
+ self.log.err(
"Directory (incorrectly) returned a record with no ServicesLocator attribute: %s"
- % (recordShortName,), id=(self, "Directory",)
+ % (recordShortName,)
)
continue
@@ -474,8 +482,7 @@
recordNodeName = value.get(dsattributes.kDSNAttrMetaNodeLocation)
if not recordGUID:
- logger.debug("Record (%s)%s in node %s has no GUID; ignoring." % (recordType, recordShortName, recordNodeName),
- id=(self, "Directory",))
+ self.log.debug("Record (%s)%s in node %s has no GUID; ignoring." % (recordType, recordShortName, recordNodeName))
continue
# Get calendar user addresses from directory record.
@@ -527,7 +534,7 @@
del recordGUID
def disableRecord(record, reason):
- logger.warn("%s: %s" % (reason, record,), id=(self, "Directory",))
+ self.log.warn("%s: %s" % (reason, record,))
shortName = record.shortName
guid = record.guid
@@ -559,7 +566,7 @@
if record.shortName not in disabledNames:
records[record.shortName] = guids[record.guid] = record
- logger.debug("Added record %s to OD record cache" % (record,), id=(self, "Directory",))
+ self.log.debug("Added record %s to OD record cache" % (record,))
if shortName is None and guid is None:
#
@@ -586,9 +593,9 @@
self._records[recordType] = storage
- logger.debug(
+ self.log.debug(
"Added %d records to %s OD record cache"
- % (len(self._records[recordType]["guids"]), recordType), id=(self, "Directory",)
+ % (len(self._records[recordType]["guids"]), recordType)
)
def _queryDirectory(self, recordType, shortName=None, guid=None):
@@ -648,7 +655,7 @@
)
if not guidQueries:
- logger.warn("No SACL enabled users found.", id=(self, "Directory",))
+ self.log.warn("No SACL enabled users found.")
return ()
query = dsquery.expression(dsquery.expression.OR, guidQueries)
@@ -713,7 +720,7 @@
attrs,
)
except opendirectory.ODError, ex:
- logger.err("Open Directory (node=%s) error: %s" % (self.realmName, str(ex)), id=(self, "Directory",))
+ self.log.err("Open Directory (node=%s) error: %s" % (self.realmName, str(ex)))
raise
return results
@@ -722,6 +729,9 @@
"""
Open Directory implementation of L{IDirectoryRecord}.
"""
+
+ log = logger.getInstance(classid="OpenDirectoryRecord", id=("Directory",))
+
def __init__(
self, service, recordType, guid, nodeName, shortName, fullName,
calendarUserAddresses, autoSchedule, enabledForCalendaring,
@@ -778,7 +788,7 @@
for guid in self._proxyGUIDs:
proxyRecord = self.service.recordWithGUID(guid)
if proxyRecord is None:
- logger.err("No record for proxy in %s with GUID %s" % (self.shortName, guid), id=(self, "Directory",))
+ self.log.err("No record for proxy in %s with GUID %s" % (self.shortName, guid))
else:
yield proxyRecord
@@ -806,8 +816,11 @@
self.password = credentials.password
return True
except opendirectory.ODError, e:
- logger.err("Open Directory (node=%s) error while performing basic authentication for user %s: %s"
- % (self.service.realmName, self.shortName, e), id=(self, "Directory", "Security",))
+ self.log.err(
+ "Open Directory (node=%s) error while performing basic authentication for user %s: %s" %
+ (self.service.realmName, self.shortName, e),
+ id=("Security",)
+ )
return False
@@ -827,11 +840,11 @@
'algorithm=%(algorithm)s'
) % credentials.fields
except KeyError, e:
- logger.err(
+ self.log.err(
"Open Directory (node=%s) error while performing digest authentication for user %s: "
"missing digest response field: %s in: %s"
% (self.service.realmName, self.shortName, e, credentials.fields),
- id=(self, "Directory", "Security",)
+ id=("Security",)
)
return False
@@ -859,13 +872,17 @@
return True
except opendirectory.ODError, e:
- logger.err(
+ self.log.err(
"Open Directory (node=%s) error while performing digest authentication for user %s: %s"
- % (self.service.realmName, self.shortName, e), id=(self, "Directory", "Security",)
+ % (self.service.realmName, self.shortName, e),
+ id=("Security",)
)
except opendirectory.ODError, e:
- logger.err("Open Directory (node=%s) error while performing digest authentication for user %s: %s"
- % (self.service.realmName, self.shortName, e), id=(self, "Directory", "Security",))
+ self.log.err(
+ "Open Directory (node=%s) error while performing digest authentication for user %s: %s"
+ % (self.service.realmName, self.shortName, e),
+ id=("Security",)
+ )
return False
return False
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/directory/digest.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/directory/digest.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/directory/digest.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -157,6 +157,8 @@
exceptionLimit = 10
+ log = logger.getInstance(classid="DigestCredentialsDB", id=("Security",))
+
def __init__(self, path):
db_path = os.path.join(path, DigestCredentialsDB.dbFilename)
super(DigestCredentialsDB, self).__init__(db_path, autocommit=True)
@@ -179,7 +181,7 @@
self.exceptions += 1
if self.exceptions >= self.exceptionLimit:
self._db_close()
- logger.err("Reset digest credentials database connection: %s" % (e,), id=(self, "Security",))
+ self.log.err("Reset digest credentials database connection: %s" % (e,))
raise
def set(self, key, value):
@@ -194,7 +196,7 @@
self.exceptions += 1
if self.exceptions >= self.exceptionLimit:
self._db_close()
- logger.err("Reset digest credentials database connection: %s" % (e,), id=(self, "Security",))
+ self.log.err("Reset digest credentials database connection: %s" % (e,))
raise
def get(self, key):
@@ -215,7 +217,7 @@
self.exceptions += 1
if self.exceptions >= self.exceptionLimit:
self._db_close()
- logger.err("Reset digest credentials database connection: %s" % (e,), id=(self, "Security",))
+ self.log.err("Reset digest credentials database connection: %s" % (e,))
raise
def delete(self, key):
@@ -229,7 +231,7 @@
self.exceptions += 1
if self.exceptions >= self.exceptionLimit:
self._db_close()
- logger.err("Reset digest credentials database connection: %s" % (e,), id=(self, "Security",))
+ self.log.err("Reset digest credentials database connection: %s" % (e,))
raise
def keys(self):
@@ -247,7 +249,7 @@
self.exceptions += 1
if self.exceptions >= self.exceptionLimit:
self._db_close()
- logger.err("Reset digest credentials database connection: %s" % (e,), id=(self, "Security",))
+ self.log.err("Reset digest credentials database connection: %s" % (e,))
raise
def _set_in_db(self, key, value):
@@ -307,6 +309,8 @@
See twisted.web2.auth.digest.DigestCredentialFactory
"""
+ log = logger.getInstance(classid="QopDigestCredentialFactory", id=("Security",))
+
def __init__(self, algorithm, qop, realm, db_path):
"""
@type algorithm: C{str}
@@ -349,7 +353,7 @@
# Make sure it is not a duplicate
if self.db.has_key(c):
- logger.err("nonce value already cached in credentials database: %s" % (c,), id=(self, "Security",))
+ self.log.err("nonce value already cached in credentials database: %s" % (c,))
raise AssertionError("nonce value already cached in credentials database: %s" % (c,))
# The database record is a tuple of (client ip, nonce-count, timestamp)
@@ -407,11 +411,11 @@
username = auth.get('username')
if not username:
- logger.warn("No username", id=(self, "Security",))
+ self.log.warn("No username")
raise error.LoginFailed('Invalid response, no username given.')
if 'nonce' not in auth:
- logger.warn("No nonce for: %s" % (auth.get('username'),), id=(self, "Security",))
+ self.log.warn("No nonce for: %s" % (auth.get('username'),))
raise error.LoginFailed('Invalid response, no nonce given.')
# Now verify the nonce/cnonce values for this client
@@ -425,7 +429,7 @@
del credentials.fields['qop']
return credentials
else:
- logger.warn("Invalid nonce/cnonce for: %s" % (auth.get('username'),), id=(self, "Security",))
+ self.log.warn("Invalid nonce/cnonce for: %s" % (auth.get('username'),))
raise error.LoginFailed('Invalid nonce/cnonce values')
def validate(self, auth, request):
@@ -448,25 +452,25 @@
# First check we have this nonce
if not self.db.has_key(nonce):
- logger.warn("Invalid nonce for: %s" % (auth.get('username'),), id=(self, "Security",))
+ self.log.warn("Invalid nonce for: %s" % (auth.get('username'),))
raise error.LoginFailed('Invalid nonce value: %s' % (nonce,))
db_clientip, db_nonce_count, db_timestamp = self.db.get(nonce)
# Next check client ip
if db_clientip != clientip:
self.invalidate(nonce)
- logger.warn("Client IPs do not match for: %s" % (auth.get('username'),), id=(self, "Security",))
+ self.log.warn("Client IPs do not match for: %s" % (auth.get('username'),))
raise error.LoginFailed('Client IPs do not match: %s and %s' % (clientip, db_clientip,))
# cnonce and nonce-count MUST be present if qop is present
if auth.get('qop') is not None:
if auth.get('cnonce') is None:
self.invalidate(nonce)
- logger.warn("Missing cnonce for: %s" % (auth.get('username'),), id=(self, "Security",))
+ self.log.warn("Missing cnonce for: %s" % (auth.get('username'),))
raise error.LoginFailed('cnonce is required when qop is specified')
if nonce_count is None:
self.invalidate(nonce)
- logger.warn("Missing nonce-count for: %s" % (auth.get('username'),), id=(self, "Security",))
+ self.log.warn("Missing nonce-count for: %s" % (auth.get('username'),))
raise error.LoginFailed('nonce-count is required when qop is specified')
# Next check the nonce-count is one greater than the previous one and update it in the DB
@@ -474,11 +478,11 @@
nonce_count = int(nonce_count, 16)
except ValueError:
self.invalidate(nonce)
- logger.warn("nonce-count not valid for: %s" % (auth.get('username'),), id=(self, "Security",))
+ self.log.warn("nonce-count not valid for: %s" % (auth.get('username'),))
raise error.LoginFailed('nonce-count is not a valid hex string: %s' % (auth.get('nonce-count'),))
if nonce_count != db_nonce_count + 1:
self.invalidate(nonce)
- logger.warn("nonce-count out of sequence for: %s" % (auth.get('username'),), id=(self, "Security",))
+ self.log.warn("nonce-count out of sequence for: %s" % (auth.get('username'),))
raise error.LoginFailed('nonce-count value out of sequence: %s should be one more than %s' % (nonce_count, db_nonce_count,))
self.db.set(nonce, (db_clientip, nonce_count, db_timestamp))
else:
@@ -486,7 +490,7 @@
# i.e. we can't allow a qop auth then a non-qop auth with the same nonce
if db_nonce_count != 0:
self.invalidate(nonce)
- logger.warn("nonce-count not allowed for: %s" % (auth.get('username'),), id=(self, "Security",))
+ self.log.warn("nonce-count not allowed for: %s" % (auth.get('username'),))
raise error.LoginFailed('nonce-count was sent with this nonce: %s' % (nonce,))
# Now check timestamp
@@ -494,7 +498,7 @@
self.invalidate(nonce)
if request.remoteAddr:
request.remoteAddr.stale = True
- logger.warn("Digest credentials expired for: %s" % (auth.get('username'),), id=(self, "Security",))
+ self.log.warn("Digest credentials expired for: %s" % (auth.get('username'),))
raise error.LoginFailed('Digest credentials expired')
return True
@@ -523,5 +527,5 @@
self.invalidate(key)
except Exception, e:
# Clean-up errors can be logged but we should ignore them
- logger.err("Error cleaning digest credentials: %s" % (e,), id=(self, "Security",))
+ self.log.err("Error cleaning digest credentials: %s" % (e,))
pass
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/directory/directory.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/directory/directory.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/directory/directory.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -52,6 +52,8 @@
recordType_locations = "locations"
recordType_resources = "resources"
+ log = logger.getInstance(classid="DirectoryService", id=("Directory",))
+
def _generatedGUID(self):
if not hasattr(self, "_guid"):
realmName = self.realmName
@@ -59,10 +61,10 @@
assert self.baseGUID, "Class %s must provide a baseGUID attribute" % (self.__class__.__name__,)
if realmName is None:
- logger.warn("Directory service %s has no realm name or GUID; generated service GUID will not be unique." % (self,), id=(self, "Directory",))
+ self.log.warn("Directory service %s has no realm name or GUID; generated service GUID will not be unique." % (self,))
realmName = ""
else:
- logger.warn("Directory service %s has no GUID; generating service GUID from realm name." % (self,), id=(self, "Directory",))
+ self.log.warn("Directory service %s has no GUID; generating service GUID from realm name." % (self,))
self._guid = uuidFromName(self.baseGUID, realmName)
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/directory/principal.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/directory/principal.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/directory/principal.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -105,6 +105,9 @@
"""
Collection resource which provisions directory principals as its children.
"""
+
+ log = logger.getInstance(classid="DirectoryPrincipalProvisioningResource", id=("Directory",))
+
def __init__(self, path, url, directory):
DirectoryProvisioningResource.__init__(self, path, url, directory)
@@ -191,7 +194,7 @@
##
def createSimilarFile(self, path):
- logger.err("Attempt to create clone %r of resource %r" % (path, self), id=(self, "Directory",))
+ self.log.err("Attempt to create clone %r of resource %r" % (path, self))
raise HTTPError(responsecode.NOT_FOUND)
def getChild(self, name):
@@ -216,6 +219,9 @@
Collection resource which provisions directory principals of a
specific type as its children, indexed by short name.
"""
+
+ log = logger.getInstance(classid="DirectoryPrincipalTypeProvisioningResource", id=("Directory",))
+
def __init__(self, parent, recordType):
"""
@param path: the path to the file which will back the resource.
@@ -243,7 +249,7 @@
##
def createSimilarFile(self, path):
- logger.err("Attempt to create clone %r of resource %r" % (path, self), id=(self, "Directory",))
+ self.log.err("Attempt to create clone %r of resource %r" % (path, self))
raise HTTPError(responsecode.NOT_FOUND)
def getChild(self, name):
@@ -268,6 +274,9 @@
Collection resource which provisions directory principals indexed
by UID.
"""
+
+ log = logger.getInstance(classid="DirectoryPrincipalUIDProvisioningResource", id=("Directory",))
+
# FIXME: Remove path argument
def __init__(self, parent):
"""
@@ -295,7 +304,7 @@
##
def createSimilarFile(self, path):
- logger.err("Attempt to create clone %r of resource %r" % (path, self), id=(self, "Directory",))
+ self.log.err("Attempt to create clone %r of resource %r" % (path, self))
raise HTTPError(responsecode.NOT_FOUND)
def getChild(self, name):
@@ -313,7 +322,7 @@
record = self.directory.recordWithGUID(primaryUID)
if record is None:
- logger.err("No principal found for UID: %s" % (name,), id=(self, "Directory",))
+ self.log.err("No principal found for UID: %s" % (name,))
return None
if record.enabledForCalendaring:
@@ -341,6 +350,9 @@
"""
Directory principal resource.
"""
+
+ log = logger.getInstance(classid="DirectoryPrincipalResource", id=("Directory",))
+
def __init__(self, path, parent, record):
"""
@param path: them path to the file which will back this resource.
@@ -468,7 +480,7 @@
if relative not in records:
found = self.parent.principalForRecord(relative)
if found is None:
- logger.err("No principal found for directory record: %r" % (relative,), id=(self, "Directory",))
+ self.log.err("No principal found for directory record: %r" % (relative,))
else:
if proxy:
found = found.getChild("calendar-proxy-write")
@@ -511,7 +523,7 @@
##
def createSimilarFile(self, path):
- logger.err("Attempt to create clone %r of resource %r" % (path, self), id=(self, "Directory",))
+ self.log.err("Attempt to create clone %r of resource %r" % (path, self))
raise HTTPError(responsecode.NOT_FOUND)
def getChild(self, name):
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/dropbox.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/dropbox.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/dropbox.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -55,6 +55,8 @@
"""
Drop box resource.
"""
+ log = logger.getInstance(classid="DropBoxCollectionResource", id=("dropbox",))
+
def resourceType(self):
return davxml.ResourceType.dropbox
@@ -209,7 +211,7 @@
"""
if not self.fp.exists():
- logger.err("File not found: %s" % (self.fp.path,), id=(self, "dropbox",))
+ self.log.err("File not found: %s" % (self.fp.path,))
raise HTTPError(responsecode.NOT_FOUND)
# Read request body
@@ -219,7 +221,7 @@
doc = doc.getResult()
except ValueError, e:
error = "Must have valid XML request body for POST on a dropbox: %s" % (e,)
- logger.err(error, id=(self, "dropbox",))
+ self.log.err(error)
raise HTTPError(StatusResponse(responsecode.BAD_REQUEST, error))
# Determine whether we are subscribing or unsubscribing and handle that
@@ -231,12 +233,12 @@
action = self.unsubscribe
else:
error = "XML request body for POST on a dropbox must contain a single <subscribe> or <unsubscribe> element"
- logger.err(error, id=(self, "dropbox",))
+ self.log.err(error)
raise HTTPError(StatusResponse(responsecode.BAD_REQUEST, error))
else:
# If we get here we got an invalid request
error = "Must have valid XML request body for POST on a dropbox"
- logger.err(error, id=(self, "dropbox",))
+ self.log.err(error)
raise HTTPError(StatusResponse(responsecode.BAD_REQUEST, error))
d = waitForDeferred(action(request))
@@ -260,7 +262,7 @@
# Error if attempt to subscribe more than once
if authid in principals:
- logger.err("Cannot x_apple_subscribe to resource %s as principal %s is already subscribed" % (request.uri, repr(authid),), id=(self, "dropbox",))
+ self.log.err("Cannot x_apple_subscribe to resource %s as principal %s is already subscribed" % (request.uri, repr(authid),))
raise HTTPError(ErrorResponse(
responsecode.FORBIDDEN,
(calendarserver_namespace, "principal-must-not-be-subscribed"))
@@ -289,7 +291,7 @@
# Error if attempt to subscribe more than once
if authid not in principals:
- logger.err("Cannot x_apple_unsubscribe from resource %s as principal %s is not currently subscribed" % (request.uri, repr(authid),), id=(self, "dropbox",))
+ self.log.err("Cannot x_apple_unsubscribe from resource %s as principal %s is not currently subscribed" % (request.uri, repr(authid),))
raise HTTPError(ErrorResponse(
responsecode.FORBIDDEN,
(calendarserver_namespace, "principal-must-be-subscribed"))
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/extensions.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/extensions.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/extensions.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -55,6 +55,8 @@
Mixin class to let DAVResource, and DAVFile subclasses below know
about sudoer principals and how to find their AuthID
"""
+ log = logger.getInstance(classid="SudoSACLMixin", id=("Security",))
+
def authenticate(self, request):
# Bypass normal authentication if its already been done (by SACL check)
if (hasattr(request, "authnUser") and
@@ -116,7 +118,7 @@
if isSudoPrincipal(authid):
if authz:
if isSudoPrincipal(authz):
- logger.err("Cannot proxy as another proxy: user '%s' as user '%s'" % (authid, authz), id=(self, "Security",))
+ self.log.err("Cannot proxy as another proxy: user '%s' as user '%s'" % (authid, authz))
raise HTTPError(responsecode.FORBIDDEN)
else:
authzPrincipal = getPrincipalForType(
@@ -126,17 +128,17 @@
authzPrincipal = self.findPrincipalForAuthID(authz)
if authzPrincipal is not None:
- logger.info("Allow proxy: user '%s' as '%s'" % (authid, authz,), id=(self, "Security",))
+ self.log.info("Allow proxy: user '%s' as '%s'" % (authid, authz,))
yield authzPrincipal
return
else:
- logger.err("Could not find authorization user id: '%s'" % (authz,), id=(self, "Security",))
+ self.log.err("Could not find authorization user id: '%s'" % (authz,))
raise HTTPError(responsecode.FORBIDDEN)
else:
- logger.err("Cannot authenticate proxy user '%s' without X-Authorize-As header" % (authid, ), id=(self, "Security",))
+ self.log.err("Cannot authenticate proxy user '%s' without X-Authorize-As header" % (authid, ))
raise HTTPError(responsecode.BAD_REQUEST)
elif authz:
- logger.err("Cannot proxy: user '%s' as '%s'" % (authid, authz,), id=(self, "Security",))
+ self.log.err("Cannot proxy: user '%s' as '%s'" % (authid, authz,))
raise HTTPError(responsecode.FORBIDDEN)
else:
# No proxy - do default behavior
@@ -346,6 +348,8 @@
"""
Extended L{twisted.web2.dav.static.DAVFile} implementation.
"""
+ log = logger.getInstance(classid=("DAVFile",))
+
def readProperty(self, property, request):
if type(property) is tuple:
qname = property
@@ -518,12 +522,12 @@
value = property.toxml()
except HTTPError, e:
if e.response.code == responsecode.NOT_FOUND:
- logger.err("Property {%s}%s was returned by listProperties() but does not exist for resource %s."
- % (qname[0], qname[1], self), id=(self, "http",))
+ self.log.err("Property {%s}%s was returned by listProperties() but does not exist for resource %s."
+ % (qname[0], qname[1], self))
continue
if e.response.code != responsecode.UNAUTHORIZED:
- logger.err("Unable to read property %s for dirlist: %s" % (qname, e), id=(self, "http",))
+ self.log.err("Unable to read property %s for dirlist: %s" % (qname, e))
raise
name = "{%s}%s" % qname
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/ical.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/ical.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/ical.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -161,6 +161,8 @@
X{iCalendar} component.
"""
+ log = logger.getInstance(classid="Component", id=("iCalendar",))
+
# Private Event access levels.
ACCESS_PROPERTY = "X-CALENDARSERVER-ACCESS"
ACCESS_PUBLIC = "PUBLIC"
@@ -891,8 +893,8 @@
for timezone in timezones:
if timezone not in timezone_refs:
#raise ValueError(
- logger.warn(
- "Timezone %s is not referenced by any non-timezone component" % (timezone,), id=(self, "iCalendar",)
+ self.log.warn(
+ "Timezone %s is not referenced by any non-timezone component" % (timezone,)
)
def transformAllFromNative(self):
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/index.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/index.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/index.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -87,6 +87,8 @@
regular calendar collections, one for schedule calendar collections.
"""
+ log = logger.getInstance(classid=("AbstractCalendarIndex",))
+
def __init__(self, resource):
"""
@param resource: the L{twistedcaldav.static.CalDAVFile} resource to
@@ -158,7 +160,7 @@
name_utf8 = name.encode("utf-8")
if name is not None and self.resource.getChild(name_utf8) is None:
# Clean up
- logger.err("Stale resource record found for child %s with UID %s in %s" % (name, uid, self.resource), id=self)
+ self.log.err("Stale resource record found for child %s with UID %s in %s" % (name, uid, self.resource))
self._delete_from_db(name, uid)
self._db_commit()
else:
@@ -279,8 +281,7 @@
if self.resource.getChild(name.encode("utf-8")):
yield row
else:
- logger.err("Calendar resource %s is missing from %s. Removing from index."
- % (name, self.resource), id=self)
+ self.log.err("Calendar resource %s is missing from %s. Removing from index." % (name, self.resource))
self.deleteResource(name)
def _db_version(self):
@@ -439,6 +440,8 @@
Calendar collection index - regular collection that enforces CalDAV UID uniqueness requirement.
"""
+ log = logger.getInstance(classid=("Index",))
+
def __init__(self, resource):
"""
@param resource: the L{twistedcaldav.static.CalDAVFile} resource to
@@ -470,7 +473,7 @@
% (uid, self.resource)
)
except sqlite.Error, e:
- logger.err("Unable to reserve UID: %s", (e,), id=self)
+ self.log.err("Unable to reserve UID: %s", (e,))
self._db_rollback()
raise
@@ -491,7 +494,7 @@
self._db_execute("delete from RESERVED where UID = :1", uid)
self._db_commit()
except sqlite.Error, e:
- logger.err("Unable to unreserve UID: %s", (e,), id=self)
+ self.log.err("Unable to unreserve UID: %s", (e,))
self._db_rollback()
raise
@@ -513,7 +516,7 @@
self._db_execute("delete from RESERVED where UID = :1", uid)
self._db_commit()
except sqlite.Error, e:
- logger.err("Unable to unreserve UID: %s", (e,), id=self)
+ self.log.err("Unable to unreserve UID: %s", (e,))
self._db_rollback()
raise
return False
@@ -569,7 +572,7 @@
try:
stream = fp.child(name).open()
except (IOError, OSError), e:
- logger.err("Unable to open resource %s: %s" % (name, e), id=self)
+ self.log.err("Unable to open resource %s: %s" % (name, e))
continue
try:
@@ -578,9 +581,9 @@
calendar = Component.fromStream(stream)
calendar.validateForCalDAV()
except ValueError:
- logger.err("Non-calendar resource: %s" % (name,), id=self)
+ self.log.err("Non-calendar resource: %s" % (name,))
else:
- logger.debug("Indexing resource: %s" % (name,), id=self)
+ self.log.debug("Indexing resource: %s" % (name,))
self.addResource(name, calendar, True)
finally:
stream.close()
@@ -592,6 +595,8 @@
"""
Schedule collection index - does not require UID uniqueness.
"""
+ log = logger.getInstance(classid=("IndexSchedule",))
+
def __init__(self, resource):
"""
@param resource: the L{twistedcaldav.static.CalDAVFile} resource to
@@ -680,7 +685,7 @@
try:
stream = fp.child(name).open()
except (IOError, OSError), e:
- logger.err("Unable to open resource %s: %s" % (name, e), id=self)
+ self.log.err("Unable to open resource %s: %s" % (name, e))
continue
try:
@@ -690,9 +695,9 @@
calendar.validCalendarForCalDAV()
calendar.validateComponentsForCalDAV(True)
except ValueError:
- logger.err("Non-calendar resource: %s" % (name,), id=self)
+ self.log.err("Non-calendar resource: %s" % (name,))
else:
- logger.debug("Indexing resource: %s" % (name,), id=self)
+ self.log.debug("Indexing resource: %s" % (name,))
self.addResource(name, calendar)
finally:
stream.close()
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/itip.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/itip.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/itip.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -56,6 +56,8 @@
"canAutoRespond",
]
+log = logger.getInstance(classid="itip", id=("iTIP",))
+
class iTipException(Exception):
pass
@@ -109,7 +111,7 @@
@param child: the L{CalDAVFile} for the iTIP message resource already saved to the Inbox.
"""
- logger.info("Auto-processing iTIP REQUEST for: %s" % (str(principal),), id="iTIP")
+ log.info("Auto-processing iTIP REQUEST for: %s" % (str(principal),))
processed = "ignored"
# First determine whether this is a full or partial update. A full update is one containing the master
@@ -156,29 +158,29 @@
newchild = waitForDeferred(writeResource(request, calURL, updatecal, calmatch, calendar))
yield newchild
newchild = newchild.getResult()
- logger.info("Replaced calendar component %s with new iTIP message in %s." % (calmatch, calURL), id="iTIP")
+ log.info("Replaced calendar component %s with new iTIP message in %s." % (calmatch, calURL))
else:
newchild = waitForDeferred(writeResource(request, calURL, updatecal, None, calendar))
yield newchild
newchild.getResult()
- logger.info("Added new calendar component in %s." % (calURL,), id="iTIP")
+ log.info("Added new calendar component in %s." % (calURL,))
else:
if calmatch:
d = waitForDeferred(deleteResource(updatecal, calmatch))
yield d
d.getResult()
- logger.info("Deleted calendar component %s in %s as update was not accepted." % (calmatch, calURL), id="iTIP")
+ log.info("Deleted calendar component %s in %s as update was not accepted." % (calmatch, calURL))
# Send a reply if needed.
if doreply:
- logger.info("Sending iTIP REPLY %s" % (("declined","accepted")[accepted],), id="iTIP")
+ log.info("Sending iTIP REPLY %s" % (("declined","accepted")[accepted],))
newchild = waitForDeferred(writeReply(request, principal, replycal, inbox))
yield newchild
newchild = newchild.getResult()
newInboxResource(child, newchild)
processed = "processed"
except:
- logger.err("Error while auto-processing iTIP: %s" % (failure.Failure(),), id="iTIP")
+ log.err("Error while auto-processing iTIP: %s" % (failure.Failure(),))
raise iTipException
else:
@@ -229,17 +231,17 @@
newchild = waitForDeferred(writeResource(request, calURL, updatecal, calmatch, cal))
yield newchild
newchild = newchild.getResult()
- logger.info("Merged calendar component %s with new iTIP message in %s." % (calmatch, calURL), id="iTIP")
+ log.info("Merged calendar component %s with new iTIP message in %s." % (calmatch, calURL))
else:
if accepted:
newchild = waitForDeferred(writeResource(request, calURL, updatecal, None, calendar))
yield newchild
newchild.getResult()
- logger.info("Added new calendar component in %s." % (calURL,), id="iTIP")
+ log.info("Added new calendar component in %s." % (calURL,))
# Do reply if needed.
if doreply:
- logger.info("Sending iTIP REPLY %s" % (("declined","accepted")[accepted],), id="iTIP")
+ log.info("Sending iTIP REPLY %s" % (("declined","accepted")[accepted],))
newchild = waitForDeferred(writeReply(request, principal, replycal, inbox))
yield newchild
newchild = newchild.getResult()
@@ -247,7 +249,7 @@
processed = "processed"
except:
- logger.err("Error while auto-processing iTIP: %s" % (failure.Failure(),), id="iTIP")
+ log.err("Error while auto-processing iTIP: %s" % (failure.Failure(),))
raise iTipException
# Remove the now processed incoming request.
@@ -255,13 +257,13 @@
d = waitForDeferred(deleteResource(inbox, child.fp.basename()))
yield d
d.getResult()
- logger.info("Deleted new iTIP message %s in Inbox because it has been %s." %
+ log.info("Deleted new iTIP message %s in Inbox because it has been %s." %
(child.fp.basename(),
{"processed":"processed",
"older": "ignored: older",
- "ignored": "ignored: no match"}[processed],), id="iTIP")
+ "ignored": "ignored: no match"}[processed],))
except:
- logger.err("Error while auto-processing iTIP: %s" % (failure.Failure(),), id="iTIP")
+ log.err("Error while auto-processing iTIP: %s" % (failure.Failure(),))
raise iTipException
yield None
return
@@ -279,7 +281,7 @@
@param calendar: the L{Component} for the iTIP message we are processing.
@param child: the L{CalDAVFile} for the iTIP message resource already saved to the Inbox.
"""
- logger.info("Auto-processing iTIP ADD for: %s" % (str(principal),), id="iTIP")
+ log.info("Auto-processing iTIP ADD for: %s" % (str(principal),))
raise NotImplementedError
@@ -320,7 +322,7 @@
@param child: the L{CalDAVFile} for the iTIP message resource already saved to the Inbox.
"""
- logger.info("Auto-processing iTIP CANCEL for: %s" % (str(principal),), id="iTIP")
+ log.info("Auto-processing iTIP CANCEL for: %s" % (str(principal),))
processed = "ignored"
# Get all component info for this iTIP message
@@ -364,9 +366,9 @@
d = waitForDeferred(deleteResource(updatecal, calmatch,))
yield d
d.getResult()
- logger.info("Delete calendar component %s in %s as it was cancelled." % (calmatch, calURL), id="iTIP")
+ log.info("Delete calendar component %s in %s as it was cancelled." % (calmatch, calURL))
except:
- logger.err("Error while auto-processing iTIP: %s" % (failure.Failure(),), id="iTIP")
+ log.err("Error while auto-processing iTIP: %s" % (failure.Failure(),))
raise iTipException
processed = "processed"
else:
@@ -427,13 +429,13 @@
d = waitForDeferred(deleteResource(updatecal, calmatch))
yield d
d.getResult()
- logger.info("Deleted calendar component %s after cancellations from iTIP message in %s." % (calmatch, calURL), id="iTIP")
+ log.info("Deleted calendar component %s after cancellations from iTIP message in %s." % (calmatch, calURL))
else:
# Update the existing calendar object
newchild = waitForDeferred(writeResource(request, calURL, updatecal, calmatch, existing_calendar))
yield newchild
newchild = newchild.getResult()
- logger.info("Updated calendar component %s with cancellations from iTIP message in %s." % (calmatch, calURL), id="iTIP")
+ log.info("Updated calendar component %s with cancellations from iTIP message in %s." % (calmatch, calURL))
processed = "processed"
else:
processed = "older"
@@ -446,13 +448,13 @@
d = waitForDeferred(deleteResource(inbox, child.fp.basename()))
yield d
d.getResult()
- logger.info("Deleted new iTIP message %s in Inbox because it has been %s." %
+ log.info("Deleted new iTIP message %s in Inbox because it has been %s." %
(child.fp.basename(),
{"processed":"processed",
"older": "ignored: older",
- "ignored": "ignored: no match"}[processed],), id="iTIP")
+ "ignored": "ignored: no match"}[processed],))
except:
- logger.err("Error while auto-processing iTIP: %s" % (failure.Failure(),), id="iTIP")
+ log.err("Error while auto-processing iTIP: %s" % (failure.Failure(),))
raise iTipException
yield None
return
@@ -517,7 +519,7 @@
break
except NumberOfMatchesWithinLimits:
accepted = False
- logger.warn("Exceeded number of matches whilst trying to find free-time.", id="iTIP")
+ log.warn("Exceeded number of matches whilst trying to find free-time.")
break
if not accepted:
@@ -608,7 +610,7 @@
yield d
d.getResult()
except AccessDeniedError:
- logger.warn("Could not send reply as %s does not have CALDAV:schedule permission on %s Inbox." % (principal.principalURL(), organizer), id="iTIP")
+ log.warn("Could not send reply as %s does not have CALDAV:schedule permission on %s Inbox." % (principal.principalURL(), organizer))
yield None
return
@@ -749,9 +751,9 @@
d = waitForDeferred(deleteResource(inbox, i[0]))
yield d
d.getResult()
- logger.info("Deleted iTIP message %s in Inbox that was older than the new one." % (i[0],), id="iTIP")
+ log.info("Deleted iTIP message %s in Inbox that was older than the new one." % (i[0],))
except:
- logger.err("Error while auto-processing iTIP: %s" % (failure.Failure(),), id="iTIP")
+ log.err("Error while auto-processing iTIP: %s" % (failure.Failure(),))
raise iTipException
else:
# For any that are newer or the same, mark the new one to be deleted.
@@ -763,9 +765,9 @@
d = waitForDeferred(deleteResource(inbox, child.fp.basename()))
yield d
d.getResult()
- logger.info("Deleted new iTIP message %s in Inbox because it was older than existing ones." % (child.fp.basename(),), id="iTIP")
+ log.info("Deleted new iTIP message %s in Inbox because it was older than existing ones." % (child.fp.basename(),))
except:
- logger.err("Error while auto-processing iTIP: %s" % (failure.Failure(),), id="iTIP")
+ log.err("Error while auto-processing iTIP: %s" % (failure.Failure(),))
raise iTipException
yield delete_child
@@ -795,7 +797,7 @@
continue
calmatch = matchComponentInCalendar(updatecal, calendar)
if calmatch:
- logger.info("Found calendar component %s matching new iTIP message in %s." % (calmatch, calURL), id="iTIP")
+ log.info("Found calendar component %s matching new iTIP message in %s." % (calmatch, calURL))
break
if calmatch is None and len(fbset):
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/logger.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/logger.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/logger.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -65,6 +65,8 @@
self.accounting = {}
+ self.displayClassNames = False
+
def read(self, fname=None):
if not fname:
@@ -90,6 +92,8 @@
self.systemLogLevels = newLogLevels
self.accounting = options.get("Accounting", {"Enabled":False,})
+
+ self.displayClassNames = options.get("Display Class Names", False,)
class Logger(object):
#
@@ -216,17 +220,47 @@
def accounting(self):
return self.options.accounting
+ class InstanceLogger(object):
+
+ def __init__(self, classid, id):
+ self.classid = classid
+ self.id = id
+
+ def info(self, message, **kwargs):
+ self._mergeIds(kwargs)
+ logger.info(message, **kwargs)
+
+ def warn(self, message, **kwargs):
+ self._mergeIds(kwargs)
+ logger.warn(message, **kwargs)
+
+ def err(self, message, **kwargs):
+ self._mergeIds(kwargs)
+ logger.err(message, **kwargs)
+
+ def debug(self, message, **kwargs):
+ self._mergeIds(kwargs)
+ logger.debug(message, **kwargs)
+
+ def _mergeIds(self, kwargs):
+ id = kwargs.get("id", ())
+ if type(id) not in (types.TupleType, types.ListType,):
+ id = (id,)
+ if logger.options.displayClassNames:
+ kwargs["id"] = (self.classid,) + self.id + id
+ else:
+ kwargs["id"] = self.id + id
+
+ @staticmethod
+ def getInstance(classid, id=()):
+ return Logger.InstanceLogger(classid, id)
+
# Create the global instance of the logger
logger = Logger()
"""
-Classes and functions for user accounting.
-
Allows different sub-systems to log data on a per-user basis.
-
Right now only iTIP logging is supported.
-
-See logger.py for more details.
"""
class Accounting(object):
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/logging.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/logging.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/logging.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -112,6 +112,8 @@
file is rotated after midnight each day.
"""
+ log = logger.getInstance(classid="RotatingFileAccessLoggingObserver", id=("Logging",))
+
def __init__(self, logpath):
self.logpath = logpath
@@ -212,10 +214,10 @@
newpath = "%s.%s" % (self.logpath, self.suffix(self.lastDate))
if os.path.exists(newpath):
- logger.err("Cannot rotate log file to %s because it already exists." % (newpath,), id="Logging")
+ self.log.err("Cannot rotate log file to %s because it already exists." % (newpath,))
return
self.logMessage("Log closed - rotating: [%s]." % (datetime.datetime.now().ctime(),), False)
- logger.info("Rotating log file to: %s" % (newpath,), id="Logging")
+ self.log.info("Rotating log file to: %s" % (newpath,))
self.f.close()
os.rename(self.logpath, newpath)
self._open()
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/copymove.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/copymove.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/copymove.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -35,6 +35,9 @@
from twistedcaldav.method.put_common import storeCalendarObjectResource
from twistedcaldav.resource import isCalendarCollectionResource
+log = logger.getInstance(classid="copymove", id=("http",))
+
+
def http_COPY(self, request):
"""
Special handling of COPY request if parents are calendar collections.
@@ -76,8 +79,8 @@
# Check for existing destination resource
overwrite = request.headers.getHeader("overwrite", True)
if destination.exists() and not overwrite:
- logger.err("Attempt to copy onto existing file without overwrite flag enabled: %s"
- % (destination.fp.path,), id=(self, "http",))
+ log.err("Attempt to copy onto existing file without overwrite flag enabled: %s"
+ % (destination.fp.path,))
raise HTTPError(StatusResponse(
responsecode.PRECONDITION_FAILED,
"Destination %s already exists." % (destination_uri,))
@@ -85,12 +88,12 @@
# Checks for copying a calendar collection
if self.isCalendarCollection():
- logger.err("Attempt to copy a calendar collection into another calendar collection %s" % destination, id=(self, "http",))
+ log.err("Attempt to copy a calendar collection into another calendar collection %s" % destination)
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "calendar-collection-location-ok")))
# We also do not allow regular collections in calendar collections
if self.isCollection():
- logger.err("Attempt to copy a collection into a calendar collection", id=(self, "http",))
+ log.err("Attempt to copy a collection into a calendar collection")
raise HTTPError(StatusResponse(
responsecode.FORBIDDEN,
"Cannot create collection within special collection %s" % (destination,))
@@ -159,8 +162,8 @@
# Check for existing destination resource
overwrite = request.headers.getHeader("overwrite", True)
if destination.exists() and not overwrite:
- logger.err("Attempt to copy onto existing file without overwrite flag enabled: %s"
- % (destination.fp.path,), id=(self, "http",))
+ log.err("Attempt to copy onto existing file without overwrite flag enabled: %s"
+ % (destination.fp.path,))
raise HTTPError(StatusResponse(
responsecode.PRECONDITION_FAILED,
"Destination %s already exists." % (destination_uri,)
@@ -169,12 +172,12 @@
if destinationcal:
# Checks for copying a calendar collection
if self.isCalendarCollection():
- logger.err("Attempt to move a calendar collection into another calendar collection %s" % destination, id=(self, "http",))
+ log.err("Attempt to move a calendar collection into another calendar collection %s" % destination)
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "calendar-collection-location-ok")))
# We also do not allow regular collections in calendar collections
if self.isCollection():
- logger.err("Attempt to move a collection into a calendar collection", id=(self, "http",))
+ log.err("Attempt to move a collection into a calendar collection")
raise HTTPError(StatusResponse(
responsecode.FORBIDDEN,
"Cannot create collection within special collection %s" % (destination,)
@@ -226,7 +229,7 @@
# Check the source path first
if not self.fp.exists():
- logger.err("File not found: %s" % (self.fp.path,), id=(self, "http",))
+ log.err("File not found: %s" % (self.fp.path,))
raise HTTPError(StatusResponse(
responsecode.NOT_FOUND,
"Source resource %s not found." % (request.uri,)
@@ -247,7 +250,7 @@
if not destination_uri:
msg = "No destination header in %s request." % (request.method,)
- logger.err(msg, id=(self, "http",))
+ log.err(msg)
raise HTTPError(StatusResponse(responsecode.BAD_REQUEST, msg))
destination = waitForDeferred(request.locateResource(destination_uri))
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/mkcalendar.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/mkcalendar.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/mkcalendar.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -32,6 +32,8 @@
from twistedcaldav import caldavxml
from twistedcaldav.logger import logger
+log = logger.getInstance(classid="mkcalendar", id=("http",))
+
def http_MKCALENDAR(self, request):
"""
Respond to a MKCALENDAR request.
@@ -50,16 +52,14 @@
x.getResult()
if self.exists():
- logger.err("Attempt to create collection where file exists: %s"
- % (self.fp.path,), id=(self, "http",))
+ log.err("Attempt to create collection where file exists: %s" % (self.fp.path,))
raise HTTPError(ErrorResponse(
responsecode.FORBIDDEN,
(davxml.dav_namespace, "resource-must-be-null"))
)
if not parent.isCollection():
- logger.err("Attempt to create collection with non-collection parent: %s"
- % (self.fp.path,), id=(self, "http",))
+ log.err("Attempt to create collection with non-collection parent: %s" % (self.fp.path,))
raise HTTPError(ErrorResponse(
responsecode.CONFLICT,
(caldavxml.caldav_namespace, "calendar-collection-location-ok"))
@@ -77,7 +77,7 @@
yield result
result = result.getResult()
except ValueError, e:
- logger.err("Error while handling MKCALENDAR: %s" % (e,), id=(self, "http",))
+ log.err("Error while handling MKCALENDAR: %s" % (e,))
raise HTTPError(StatusResponse(responsecode.BAD_REQUEST, str(e)))
if doc is not None:
@@ -88,7 +88,7 @@
error = ("Non-%s element in MKCALENDAR request body: %s"
% (caldavxml.MakeCalendar.name, makecalendar))
- logger.err(error, id=(self, "http",))
+ log.err(error)
raise HTTPError(StatusResponse(responsecode.UNSUPPORTED_MEDIA_TYPE, error))
errors = PropertyStatusResponseQueue("PROPPATCH", request.uri, responsecode.NO_CONTENT)
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/put.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/put.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/put.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -31,6 +31,8 @@
from twistedcaldav.method.put_common import storeCalendarObjectResource
from twistedcaldav.resource import isPseudoCalendarCollectionResource
+log = logger.getInstance(classid="put", id=("http",))
+
def http_PUT(self, request):
parentURL = parentForURL(request.uri)
@@ -44,7 +46,7 @@
# Content-type check
content_type = request.headers.getHeader("content-type")
if content_type is not None and (content_type.mediaType, content_type.mediaSubtype) != ("text", "calendar"):
- logger.err("MIME type %s not allowed in calendar collection" % (content_type,), id=(self, "http",))
+ log.err("MIME type %s not allowed in calendar collection" % (content_type,))
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "supported-calendar-data")))
# Read the calendar component from the stream
@@ -72,7 +74,7 @@
return
except ValueError, e:
- logger.err("Error while handling (calendar) PUT: %s" % (e,), id=(self, "http",))
+ log.err("Error while handling (calendar) PUT: %s" % (e,))
raise HTTPError(StatusResponse(responsecode.BAD_REQUEST, str(e)))
else:
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/put_common.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/put_common.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/put_common.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -55,6 +55,8 @@
from twistedcaldav.index import ReservationError
from twistedcaldav.instance import TooManyInstancesError
+log = logger.getInstance(classid="storeCalendarObjectResource", id=("Store Resource",))
+
@deferredGenerator
def storeCalendarObjectResource(
request,
@@ -90,19 +92,19 @@
assert (calendardata is None and source is not None) or (calendardata is not None and source is None)
assert not deletesource or (deletesource and source is not None)
except AssertionError:
- logger.err("Invalid arguments to storeCalendarObjectResource():", id="Store Resource")
- logger.err("request=%s\n" % (request,), id="Store Resource")
- logger.err("sourcecal=%s\n" % (sourcecal,), id="Store Resource")
- logger.err("destinationcal=%s\n" % (destinationcal,), id="Store Resource")
- logger.err("source=%s\n" % (source,), id="Store Resource")
- logger.err("source_uri=%s\n" % (source_uri,), id="Store Resource")
- logger.err("sourceparent=%s\n" % (sourceparent,), id="Store Resource")
- logger.err("destination=%s\n" % (destination,), id="Store Resource")
- logger.err("destination_uri=%s\n" % (destination_uri,), id="Store Resource")
- logger.err("destinationparent=%s\n" % (destinationparent,), id="Store Resource")
- logger.err("calendardata=%s\n" % (calendardata,), id="Store Resource")
- logger.err("deletesource=%s\n" % (deletesource,), id="Store Resource")
- logger.err("isiTIP=%s\n" % (isiTIP,), id="Store Resource")
+ log.err("Invalid arguments to storeCalendarObjectResource():")
+ log.err("request=%s\n" % (request,))
+ log.err("sourcecal=%s\n" % (sourcecal,))
+ log.err("destinationcal=%s\n" % (destinationcal,))
+ log.err("source=%s\n" % (source,))
+ log.err("source_uri=%s\n" % (source_uri,))
+ log.err("sourceparent=%s\n" % (sourceparent,))
+ log.err("destination=%s\n" % (destination,))
+ log.err("destination_uri=%s\n" % (destination_uri,))
+ log.err("destinationparent=%s\n" % (destinationparent,))
+ log.err("calendardata=%s\n" % (calendardata,))
+ log.err("deletesource=%s\n" % (deletesource,))
+ log.err("isiTIP=%s\n" % (isiTIP,))
raise
class RollbackState(object):
@@ -129,52 +131,52 @@
"""
if self.active:
self.active = False
- logger.debug("Rollback: rollback", id="Store Resource")
+ log.debug("Rollback: rollback")
try:
if self.source_copy and self.source_deleted:
self.source_copy.moveTo(source.fp)
- logger.debug("Rollback: source restored %s to %s" % (self.source_copy.path, source.fp.path), id="Store Resource")
+ log.debug("Rollback: source restored %s to %s" % (self.source_copy.path, source.fp.path))
self.source_copy = None
self.source_deleted = False
if self.destination_copy:
destination.fp.remove()
- logger.debug("Rollback: destination restored %s to %s" % (self.destination_copy.path, destination.fp.path), id="Store Resource")
+ log.debug("Rollback: destination restored %s to %s" % (self.destination_copy.path, destination.fp.path))
self.destination_copy.moveTo(destination.fp)
self.destination_copy = None
elif self.destination_created:
if destinationcal:
doRemoveDestinationIndex()
- logger.debug("Rollback: destination index removed %s" % (destination.fp.path,), id="Store Resource")
+ log.debug("Rollback: destination index removed %s" % (destination.fp.path,))
self.destination_index_deleted = False
destination.fp.remove()
- logger.debug("Rollback: destination removed %s" % (destination.fp.path,), id="Store Resource")
+ log.debug("Rollback: destination removed %s" % (destination.fp.path,))
self.destination_created = False
if self.destination_index_deleted:
# Must read in calendar for destination being re-indexed
doDestinationIndex(destination.iCalendar())
self.destination_index_deleted = False
- logger.debug("Rollback: destination re-indexed %s" % (destination.fp.path,), id="Store Resource")
+ log.debug("Rollback: destination re-indexed %s" % (destination.fp.path,))
if self.source_index_deleted:
doSourceIndexRecover()
self.destination_index_deleted = False
- logger.debug("Rollback: source re-indexed %s" % (source.fp.path,), id="Store Resource")
+ log.debug("Rollback: source re-indexed %s" % (source.fp.path,))
except:
- logger.err("Rollback: exception caught and not handled: %s" % failure.Failure(), id="Store Resource")
+ log.err("Rollback: exception caught and not handled: %s" % failure.Failure())
def Commit(self):
"""
Commit the resource changes by wiping the rollback state.
"""
if self.active:
- logger.debug("Rollback: commit", id="Store Resource")
+ log.debug("Rollback: commit")
self.active = False
if self.source_copy:
self.source_copy.remove()
- logger.debug("Rollback: removed source backup %s" % (self.source_copy.path,), id="Store Resource")
+ log.debug("Rollback: removed source backup %s" % (self.source_copy.path,))
self.source_copy = None
if self.destination_copy:
self.destination_copy.remove()
- logger.debug("Rollback: removed destination backup %s" % (self.destination_copy.path,), id="Store Resource")
+ log.debug("Rollback: removed destination backup %s" % (self.destination_copy.path,))
self.destination_copy = None
self.destination_created = False
self.source_deleted = False
@@ -349,7 +351,7 @@
# Valid resource name check
result, message = validResourceName()
if not result:
- logger.err(message, id="Store Resource")
+ log.err(message)
raise HTTPError(StatusResponse(responsecode.FORBIDDEN, "Resource name not allowed"))
if not sourcecal:
@@ -357,7 +359,7 @@
if source is not None:
result, message = validContentType()
if not result:
- logger.err(message, id="Store Resource")
+ log.err(message)
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "supported-calendar-data")))
# At this point we need the calendar data to do more tests
@@ -366,19 +368,19 @@
try:
calendar = Component.fromString(calendardata)
except ValueError, e:
- logger.err(str(e), id="Store Resource")
+ log.err(str(e))
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data")))
# Valid calendar data check
result, message = validCalendarDataCheck()
if not result:
- logger.err(message, id="Store Resource")
+ log.err(message)
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data")))
# Valid calendar data for CalDAV check
result, message = validCalDAVDataCheck()
if not result:
- logger.err(message, id="Store Resource")
+ log.err(message)
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-object-resource")))
# Must have a valid UID at this point
@@ -388,7 +390,7 @@
source_index = sourceparent.index()
uid = source_index.resourceUIDForName(source.fp.basename())
if uid is None:
- logger.err("Source calendar does not have a UID: %s" % source.fp.basename(), id="Store Resource")
+ log.err("Source calendar does not have a UID: %s" % source.fp.basename())
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-object-resource")))
# FIXME: We need this here because we have to re-index the destination. Ideally it
@@ -398,7 +400,7 @@
# Valid calendar data size check
result, message = validSizeCheck()
if not result:
- logger.err(message, id="Store Resource")
+ log.err(message)
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "max-resource-size")))
# Check access
@@ -438,7 +440,7 @@
if not isiTIP:
result, message, rname = noUIDConflict(uid)
if not result:
- logger.err(message, id="Store Resource")
+ log.err(message)
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN,
NoUIDConflict(davxml.HRef.fromString(joinURL(parentForURL(destination_uri), rname.encode("utf-8"))))
))
@@ -484,16 +486,16 @@
rollback.destination_copy = FilePath(destination.fp.path)
rollback.destination_copy.path += ".rollback"
copyToWithXAttrs(destination.fp, rollback.destination_copy)
- logger.debug("Rollback: backing up destination %s to %s" % (destination.fp.path, rollback.destination_copy.path), id="Store Resource")
+ log.debug("Rollback: backing up destination %s to %s" % (destination.fp.path, rollback.destination_copy.path))
else:
rollback.destination_created = True
- logger.debug("Rollback: will create new destination %s" % (destination.fp.path,), id="Store Resource")
+ log.debug("Rollback: will create new destination %s" % (destination.fp.path,))
if deletesource:
rollback.source_copy = FilePath(source.fp.path)
rollback.source_copy.path += ".rollback"
copyToWithXAttrs(source.fp, rollback.source_copy)
- logger.debug("Rollback: backing up source %s to %s" % (source.fp.path, rollback.source_copy.path), id="Store Resource")
+ log.debug("Rollback: backing up source %s to %s" % (source.fp.path, rollback.source_copy.path))
"""
Handle actual store operations here.
@@ -557,15 +559,15 @@
# Add or update the index for this resource.
try:
destination_index.addResource(destination.fp.basename(), caltoindex)
- logger.debug("Destination indexed %s" % (destination.fp.path,), id="Store Resource")
+ log.debug("Destination indexed %s" % (destination.fp.path,))
except TooManyInstancesError, ex:
- logger.err("Cannot index calendar resource as there are too many recurrence instances %s" % destination, id="Store Resource")
+ log.err("Cannot index calendar resource as there are too many recurrence instances %s" % destination)
raise HTTPError(ErrorResponse(
responsecode.FORBIDDEN,
NumberOfRecurrencesWithinLimits(PCDATAElement(str(ex.max_allowed)))
))
except (ValueError, TypeError), ex:
- logger.err("Cannot index calendar resource: %s" % (ex,), id="Store Resource")
+ log.err("Cannot index calendar resource: %s" % (ex,))
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data")))
destination.writeDeadProperty(davxml.GETContentType.fromString("text/calendar"))
@@ -580,19 +582,19 @@
if destinationcal:
destination_index.deleteResource(destination.fp.basename())
rollback.destination_index_deleted = True
- logger.debug("Destination index removed %s" % (destination.fp.path,), id="Store Resource")
+ log.debug("Destination index removed %s" % (destination.fp.path,))
def doSourceDelete():
# Delete index for original item
if sourcecal:
source_index.deleteResource(source.fp.basename())
rollback.source_index_deleted = True
- logger.debug("Source index removed %s" % (source.fp.path,), id="Store Resource")
+ log.debug("Source index removed %s" % (source.fp.path,))
# Delete the source resource
delete(source_uri, source.fp, "0")
rollback.source_deleted = True
- logger.debug("Source removed %s" % (source.fp.path,), id="Store Resource")
+ log.debug("Source removed %s" % (source.fp.path,))
def doSourceIndexRecover():
"""
@@ -642,7 +644,7 @@
new_dest_size = new_dest_size.getResult()
diff_size = new_dest_size - old_dest_size
if diff_size >= destquota[0]:
- logger.err("Over quota: available %d, need %d" % (destquota[0], diff_size), id="Store Resource")
+ log.err("Over quota: available %d, need %d" % (destquota[0], diff_size))
raise HTTPError(ErrorResponse(responsecode.INSUFFICIENT_STORAGE_SPACE, (dav_namespace, "quota-not-exceeded")))
d = waitForDeferred(destination.quotaSizeAdjust(request, diff_size))
yield d
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/report.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/report.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/report.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -40,6 +40,8 @@
from twistedcaldav import caldavxml
from twistedcaldav.logger import logger
+log = logger.getInstance(classid="report", id=("http",))
+
max_number_of_matches = 500
class NumberOfMatchesWithinLimits(Exception):
@@ -50,7 +52,7 @@
Respond to a REPORT request. (RFC 3253, section 3.6)
"""
if not self.fp.exists():
- logger.err("File not found: %s" % (self.fp.path,), id=(self, "http",))
+ log.err("File not found: %s" % (self.fp.path,))
raise HTTPError(responsecode.NOT_FOUND)
#
@@ -61,7 +63,7 @@
yield doc
doc = doc.getResult()
except ValueError, e:
- logger.err("Error while handling REPORT body: %s" % (e,), id=(self, "http",))
+ log.err("Error while handling REPORT body: %s" % (e,))
raise HTTPError(StatusResponse(responsecode.BAD_REQUEST, str(e)))
if doc is None:
@@ -106,8 +108,10 @@
#
# Requested report is not supported.
#
- logger.err("Unsupported REPORT {%s}%s for resource %s (no method %s)"
- % (namespace, name, self, method_name), id=(self, "http",))
+ log.err(
+ "Unsupported REPORT {%s}%s for resource %s (no method %s)"
+ % (namespace, name, self, method_name)
+ )
raise HTTPError(ErrorResponse(
responsecode.FORBIDDEN,
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/report_calquery.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/report_calquery.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/report_calquery.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -36,6 +36,8 @@
import urllib
+log = logger.getInstance(classid="report_calquery", id=("http",))
+
max_number_of_results = 1000
def report_urn_ietf_params_xml_ns_caldav_calendar_query(self, request, calendar_query):
@@ -53,7 +55,7 @@
yield parent
parent = parent.getResult()
if not parent.isPseudoCalendarCollection():
- logger.err("calendar-query report is not allowed on a resource outside of a calendar collection %s" % (self,), id=(self, "http",))
+ log.err("calendar-query report is not allowed on a resource outside of a calendar collection %s" % (self,))
raise HTTPError(StatusResponse(responsecode.FORBIDDEN, "Must be calendar collection or calendar resource"))
responses = []
@@ -66,7 +68,7 @@
# Get the original timezone provided in the query, if any, and validate it now
query_tz = calendar_query.timezone
if query_tz is not None and not query_tz.valid():
- logger.err("CalDAV:timezone must contain one VTIMEZONE component only: %s" % (query_tz,), id=(self, "http",))
+ log.err("CalDAV:timezone must contain one VTIMEZONE component only: %s" % (query_tz,))
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data")))
if query_tz:
filter.settimezone(query_tz)
@@ -85,7 +87,7 @@
# Verify that any calendar-data element matches what we can handle
result, message, generate_calendar_data = report_common.validPropertyListCalendarDataTypeVersion(query)
if not result:
- logger.err(message, id=(self, "http",))
+ log.err(message)
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "supported-calendar-data")))
else:
@@ -93,7 +95,7 @@
# Verify that the filter element is valid
if (filter is None) or not filter.valid():
- logger.err("Invalid filter element: %r" % (filter,), id=(self, "http",))
+ log.err("Invalid filter element: %r" % (filter,))
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-filter")))
matchcount = [0]
@@ -239,7 +241,7 @@
yield d
d.getResult()
except NumberOfMatchesWithinLimits:
- logger.err("Too many matching components in calendar-query report", id=(self, "http",))
+ log.err("Too many matching components in calendar-query report")
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (dav_namespace, "number-of-matches-within-limits")))
yield MultiStatusResponse(responses)
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/report_common.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/report_common.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/report_common.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -52,6 +52,8 @@
import md5
import time
+log = logger.getInstance(classid="report_common", id=("http",))
+
def applyToCalendarCollections(resource, request, request_uri, depth, apply, privileges):
"""
Run an operation on all calendar collections, starting at the specified
@@ -271,7 +273,7 @@
status = statusForFailure(f, "getting property: %s" % (qname,))
if status != responsecode.NOT_FOUND:
- logger.err("Error reading property %r for resource %s: %s" % (qname, request.uri, f.value), id=("report_common", "http",))
+ log.err("Error reading property %r for resource %s: %s" % (qname, request.uri, f.value))
if status not in properties_by_status: properties_by_status[status] = []
properties_by_status[status].append(propertyName(qname))
else:
@@ -364,7 +366,7 @@
# between our initial index query and getting here. For now we will ignore this errror, but in
# the longer term we need to simplement some form of locking, perhaps.
if calendar is None:
- logger.err("Calendar %s is missing from calendar collection %r" % (name, calresource), id=("report_common", "http",))
+ log.err("Calendar %s is missing from calendar collection %r" % (name, calresource))
continue
# Ignore ones of this UID
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/report_freebusy.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/report_freebusy.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/report_freebusy.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -33,13 +33,15 @@
from twistedcaldav.logger import logger
from twistedcaldav.method import report_common
+log = logger.getInstance(classid="report_freebusy", id=("http",))
+
def report_urn_ietf_params_xml_ns_caldav_free_busy_query(self, request, freebusy): #@UnusedVariable
"""
Generate a free-busy REPORT.
(CalDAV-access-09, section 7.8)
"""
if not self.isCollection():
- logger.err("freebusy report is only allowed on collection resources %s" % (self,), id=("report_freebusy", "http",))
+ log.err("freebusy report is only allowed on collection resources %s" % (self,))
raise HTTPError(StatusResponse(responsecode.FORBIDDEN, "Not a calendar collection"))
if freebusy.qname() != (caldavxml.caldav_namespace, "free-busy-query"):
@@ -73,7 +75,7 @@
yield d
d.getResult()
except NumberOfMatchesWithinLimits:
- logger.err("Too many matching components in free-busy report", id=("report_freebusy", "http",))
+ log.err("Too many matching components in free-busy report")
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (dav_namespace, "number-of-matches-within-limits")))
# Now build a new calendar object with the free busy info we have
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/report_multiget.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/report_multiget.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/method/report_multiget.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -35,6 +35,8 @@
from urllib import unquote
+log = logger.getInstance(classid="report_multiget", id=("http",))
+
max_number_of_multigets = 5000
def report_urn_ietf_params_xml_ns_caldav_calendar_multiget(self, request, multiget):
@@ -53,7 +55,7 @@
yield parent
parent = parent.getResult()
if not parent.isPseudoCalendarCollection():
- logger.err("calendar-multiget report is not allowed on a resource outside of a calendar collection %s" % (self,), id=("report_multiget", "http",))
+ log.err("calendar-multiget report is not allowed on a resource outside of a calendar collection %s" % (self,))
raise HTTPError(StatusResponse(responsecode.FORBIDDEN, "Must be calendar resource"))
responses = []
@@ -73,14 +75,14 @@
# Verify that any calendar-data element matches what we can handle
result, message, _ignore = report_common.validPropertyListCalendarDataTypeVersion(propertyreq)
if not result:
- logger.err(message, id=("report_multiget", "http",))
+ log.err(message)
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "supported-calendar-data")))
else:
raise AssertionError("We shouldn't be here")
# Check size of results is within limit
if len(resources) > max_number_of_multigets:
- logger.err("Too many results in multiget report: %d" % len(resources), id=("report_multiget", "http",))
+ log.err("Too many results in multiget report: %d" % len(resources))
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (dav_namespace, "number-of-matches-within-limits")))
"""
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/pdmonster.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/pdmonster.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/pdmonster.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -7,6 +7,9 @@
from twistedcaldav.logger import logger
class PDClientAddressWrapper(WrapperResource):
+
+ log = logger.getInstance(classid=("PDClientAddressWrapper",))
+
def __init__(self, resource, socket, directory):
super(PDClientAddressWrapper, self).__init__(resource)
@@ -31,10 +34,10 @@
result.trap(amp.RemoteAmpError)
if result.value.errorCode != 'UNKNOWN_PORT':
return result
- logger.err('Unknown Port: %s' % (request.remoteAddr,), id=self)
+ self.log.err('Unknown Port: %s' % (request.remoteAddr,))
def _gotAddress(result):
- logger.debug('result = %r' % (result,), id=self)
+ self.log.debug('result = %r' % (result,))
request.remoteAddr = address.IPv4Address(
'TCP',
result['host'],
@@ -46,7 +49,7 @@
return
host, port = request.remoteAddr.host, request.remoteAddr.port
- logger.debug("GetClientAddress(host=%r, port=%r)" % (host, port), id=self)
+ self.log.debug("GetClientAddress(host=%r, port=%r)" % (host, port))
d = self.protocol.callRemoteString("GetClientAddress",
host=host,
port=str(port))
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/root.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/root.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/root.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -33,6 +33,8 @@
as well as adding responseFilters.
"""
+ log = logger.getInstance(classid=("RootResource",))
+
useSacls = False
saclService = 'calendar'
@@ -43,9 +45,9 @@
if RootResource.CheckSACL:
self.useSacls = True
else:
- logger.warn(("RootResource.CheckSACL is unset but "
+ self.log.warn(("RootResource.CheckSACL is unset but "
"config.EnableSACLs is True, SACLs will not be "
- "turned on."), id=[self, "Startup", "Security",])
+ "turned on."), id=("Startup", "Security",))
self.contentFilters = []
@@ -63,7 +65,7 @@
# SACLs are authorization for the use of the service,
# so unauthenticated access doesn't make any sense.
if authzUser == davxml.Principal(davxml.Unauthenticated()):
- logger.warn("Unauthenticated users not enabled with the '%s' SACL" % (self.saclService,), id=["self", "Security",])
+ self.log.warn("Unauthenticated users not enabled with the '%s' SACL" % (self.saclService,), id=("Security",))
return Failure(HTTPError(UnauthorizedResponse(
request.credentialFactories,
request.remoteAddr)))
@@ -92,7 +94,7 @@
username = principal.record.shortName
if RootResource.CheckSACL(username, self.saclService) != 0:
- logger.warn("User '%s' is not enabled with the '%s' SACL" % (username, self.saclService,), id=[self, "Security",])
+ self.log.warn("User '%s' is not enabled with the '%s' SACL" % (username, self.saclService,), id=("Security",))
return Failure(HTTPError(403))
# Mark SACL's as having been checked so we can avoid doing it multiple times
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/schedule.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/schedule.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/schedule.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -166,6 +166,8 @@
Extends L{DAVResource} to provide CalDAV functionality.
"""
+ log = logger.getInstance(classid="ScheduleOutboxResource", id=("Outbox",))
+
def defaultAccessControlList(self):
if config.EnableProxyPrincipals:
myPrincipal = self.parent.principalForRecord()
@@ -202,13 +204,13 @@
# Must be content-type text/calendar
content_type = request.headers.getHeader("content-type")
if content_type is not None and (content_type.mediaType, content_type.mediaSubtype) != ("text", "calendar"):
- logger.warn("MIME type %s not allowed in calendar collection" % (content_type,), id="CalDAV Outbox POST")
+ self.log.warn("MIME type %s not allowed in calendar collection" % (content_type,))
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "supported-calendar-data")))
# Must have Originator header
originator = request.headers.getRawHeaders("originator")
if originator is None or (len(originator) != 1):
- logger.warn("POST request must have Originator header", id="CalDAV Outbox POST")
+ self.log.warn("POST request must have Originator header")
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "originator-specified")))
else:
originator = originator[0]
@@ -216,23 +218,23 @@
# Verify that Originator is a valid calendar user (has an INBOX)
oprincipal = self.principalForCalendarUserAddress(originator)
if oprincipal is None:
- logger.warn("Could not find principal for originator: %s" % (originator,), id="CalDAV Outbox POST")
+ self.log.warn("Could not find principal for originator: %s" % (originator,))
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "originator-allowed")))
inboxURL = oprincipal.scheduleInboxURL()
if inboxURL is None:
- logger.warn("Could not find inbox for originator: %s" % (originator,), id="CalDAV Outbox POST")
+ self.log.warn("Could not find inbox for originator: %s" % (originator,))
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "originator-allowed")))
# Verify that Originator matches the authenticated user
if davxml.Principal(davxml.HRef(oprincipal.principalURL())) != self.currentPrincipal(request):
- logger.warn("Originator: %s does not match authorized user: %s" % (originator, self.currentPrincipal(request).children[0],), id="CalDAV Outbox POST")
+ self.log.warn("Originator: %s does not match authorized user: %s" % (originator, self.currentPrincipal(request).children[0],))
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "originator-allowed")))
# Get list of Recipient headers
rawrecipients = request.headers.getRawHeaders("recipient")
if rawrecipients is None or (len(rawrecipients) == 0):
- logger.warn("POST request must have at least one Recipient header", id="CalDAV Outbox POST")
+ self.log.warn("POST request must have at least one Recipient header")
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "recipient-specified")))
# Recipient header may be comma separated list
@@ -252,29 +254,29 @@
yield d
calendar = d.getResult()
except:
- logger.warn("Error while handling POST: %s" % (Failure(),), id="CalDAV Outbox POST")
+ self.log.warn("Error while handling POST: %s" % (Failure(),))
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data")))
# Must be a valid calendar
try:
calendar.validCalendarForCalDAV()
except ValueError:
- logger.warn("POST request calendar component is not valid: %s" % (calendar,), id="CalDAV Outbox POST")
+ self.log.warn("POST request calendar component is not valid: %s" % (calendar,))
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data")))
# Must have a METHOD
if not calendar.isValidMethod():
- logger.warn("POST request must have valid METHOD property in calendar component: %s" % (calendar,), id="CalDAV Outbox POST")
+ self.log.warn("POST request must have valid METHOD property in calendar component: %s" % (calendar,))
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data")))
# Verify iTIP behaviour
if not calendar.isValidITIP():
- logger.warn("POST request must have a calendar component that satisfies iTIP requirements: %s" % (calendar,), id="CalDAV Outbox POST")
+ self.log.warn("POST request must have a calendar component that satisfies iTIP requirements: %s" % (calendar,))
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data")))
# X-CALENDARSERVER-ACCESS is not allowed in Outbox POSTs
if calendar.hasProperty(Component.ACCESS_PROPERTY):
- logger.err("X-CALENDARSERVER-ACCESS not allowed in a calendar component POST request: %s" % (calendar,), id="CalDAV Outbox POST")
+ self.log.err("X-CALENDARSERVER-ACCESS not allowed in a calendar component POST request: %s" % (calendar,))
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (calendarserver_namespace, "no-access-restrictions")))
# Verify that the ORGANIZER's cu address maps to the request.uri
@@ -285,12 +287,12 @@
if oprincipal is not None:
outboxURL = oprincipal.scheduleOutboxURL()
if outboxURL is None:
- logger.warn("ORGANIZER in calendar data is not valid: %s" % (calendar,), id="CalDAV Outbox POST")
+ self.log.warn("ORGANIZER in calendar data is not valid: %s" % (calendar,))
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "organizer-allowed")))
# Prevent spoofing of ORGANIZER with specific METHODs
if (calendar.propertyValue("METHOD") in ("PUBLISH", "REQUEST", "ADD", "CANCEL", "DECLINECOUNTER")) and (outboxURL != request.uri):
- logger.warn("ORGANIZER in calendar data does not match owner of Outbox: %s" % (calendar,), id="CalDAV Outbox POST")
+ self.log.warn("ORGANIZER in calendar data does not match owner of Outbox: %s" % (calendar,))
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "organizer-allowed")))
# Prevent spoofing when doing reply-like METHODs
@@ -301,7 +303,7 @@
# Must have only one
if len(attendees) != 1:
- logger.warn("ATTENDEE list in calendar data is wrong: %s" % (calendar,), id="CalDAV Outbox POST")
+ self.log.warn("ATTENDEE list in calendar data is wrong: %s" % (calendar,))
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "attendee-allowed")))
# Attendee's Outbox MUST be the request URI
@@ -310,21 +312,21 @@
if aprincipal is not None:
aoutboxURL = aprincipal.scheduleOutboxURL()
if aoutboxURL is None or aoutboxURL != request.uri:
- logger.warn("ATTENDEE in calendar data does not match owner of Outbox: %s" % (calendar,), id="CalDAV Outbox POST")
+ self.log.warn("ATTENDEE in calendar data does not match owner of Outbox: %s" % (calendar,))
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "attendee-allowed")))
# For free-busy do immediate determination of iTIP result rather than fan-out
- logger.info("METHOD: %s, Component: %s" % (calendar.propertyValue("METHOD"), calendar.mainType(),), id="CalDAV Outbox POST")
+ self.log.info("METHOD: %s, Component: %s" % (calendar.propertyValue("METHOD"), calendar.mainType(),))
if (calendar.propertyValue("METHOD") == "REQUEST") and (calendar.mainType() == "VFREEBUSY"):
# Extract time range from VFREEBUSY object
vfreebusies = [v for v in calendar.subcomponents() if v.name() == "VFREEBUSY"]
if len(vfreebusies) != 1:
- logger.warn("iTIP data is not valid for a VFREEBUSY request: %s" % (calendar,), id="CalDAV Outbox POST")
+ self.log.warn("iTIP data is not valid for a VFREEBUSY request: %s" % (calendar,))
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data")))
dtstart = vfreebusies[0].getStartDateUTC()
dtend = vfreebusies[0].getEndDateUTC()
if dtstart is None or dtend is None:
- logger.warn("VFREEBUSY start/end not valid: %s" % (calendar,), id="CalDAV Outbox POST")
+ self.log.warn("VFREEBUSY start/end not valid: %s" % (calendar,))
raise HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "valid-calendar-data")))
timerange.start = dtstart
timerange.end = dtend
@@ -359,7 +361,7 @@
# Map recipient to their inbox
inbox = None
if principal is None:
- logger.warn("No principal for calendar user address: %s" % (recipient,), id="CalDAV Outbox POST")
+ self.log.warn("No principal for calendar user address: %s" % (recipient,))
else:
inboxURL = principal.scheduleInboxURL()
if inboxURL:
@@ -367,7 +369,7 @@
yield inbox
inbox = inbox.getResult()
else:
- logger.warn("No schedule inbox for principal: %s" % (principal,), id="CalDAV Outbox POST")
+ self.log.warn("No schedule inbox for principal: %s" % (principal,))
if inbox is None:
err = HTTPError(ErrorResponse(responsecode.NOT_FOUND, (caldav_namespace, "recipient-exists")))
@@ -385,7 +387,7 @@
yield d
d.getResult()
except AccessDeniedError:
- logger.warn("Could not access Inbox for recipient: %s" % (recipient,), id="CalDAV Outbox POST")
+ self.log.warn("Could not access Inbox for recipient: %s" % (recipient,))
err = HTTPError(ErrorResponse(responsecode.NOT_FOUND, (caldav_namespace, "recipient-permisions")))
responses.add(recipient, Failure(exc_value=err), reqstatus="3.8;No authority")
recipients_state["BAD"] += 1
@@ -453,7 +455,7 @@
recipients_state["OK"] += 1
except Exception, ex:
- logger.err("Could not determine free busy information: %s, %s" % (recipient, ex), id="CalDAV Outbox POST")
+ self.log.err("Could not determine free busy information: %s, %s" % (recipient, ex))
err = HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "recipient-permissions")))
responses.add(recipient, Failure(exc_value=err), reqstatus="3.8;No authority")
recipients_state["BAD"] += 1
@@ -498,7 +500,7 @@
if principal.autoSchedule():
autoresponses.append((principal, inbox, child))
except Exception, ex:
- logger.err("Could not store data in Inbox : %s, %s" % (inbox, ex), id="CalDAV Outbox POST")
+ self.log.err("Could not store data in Inbox : %s, %s" % (inbox, ex))
err = HTTPError(ErrorResponse(responsecode.FORBIDDEN, (caldav_namespace, "recipient-permissions")))
responses.add(recipient, Failure(exc_value=err), reqstatus="3.8;No authority")
recipients_state["BAD"] += 1
@@ -543,6 +545,8 @@
Stores a list of (typically error) responses for use in a
L{ScheduleResponse}.
"""
+ log = logger.getInstance(classid="ScheduleResponseQueue", id=("Outbox",))
+
def __init__(self, method, success_response):
"""
@param method: the name of the method generating the queue.
@@ -580,8 +584,8 @@
else:
raise AssertionError("Unknown data type: %r" % (what,))
- if code > 400: # Error codes only
- logger.err("Error during %s for %s: %s" % (self.method, recipient, message), id="CalDAV Outbox POST")
+ if code >= 400: # Error codes only
+ self.log.err("Error during %s for %s: %s" % (self.method, recipient, message))
children = []
children.append(caldavxml.Recipient(davxml.HRef.fromString(recipient)))
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/sql.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/sql.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/sql.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -38,6 +38,8 @@
A generic SQL database.
"""
+ log = logger.getInstance(classid="AbstractSQLDatabase", id=("SQL",))
+
def __init__(self, dbpath, autocommit=False):
"""
@@ -74,7 +76,7 @@
else:
self._db_connection = sqlite.connect(db_filename)
except:
- logger.err("Unable to open database: %s" % (db_filename,), id=self)
+ self.log.err("Unable to open database: %s" % (db_filename,))
raise
#
@@ -105,11 +107,11 @@
if (version != self._db_version()) or (type != self._db_type()):
if version != self._db_version():
- logger.err("Database %s has different schema (v.%s vs. v.%s)"
- % (db_filename, version, self._db_version()), id=self)
+ self.log.err("Database %s has different schema (v.%s vs. v.%s)"
+ % (db_filename, version, self._db_version()))
if type != self._db_type():
- logger.err("Database %s has different type (%s vs. %s)"
- % (db_filename, type, self._db_type()), id=self)
+ self.log.err("Database %s has different type (%s vs. %s)"
+ % (db_filename, type, self._db_type()))
# Delete this index and start over
q.close()
@@ -140,7 +142,7 @@
@param db_filename: the file name of the index database.
@param q: a database cursor to use.
"""
- logger.info("Initializing database %s" % (db_filename,), id=self)
+ self.log.info("Initializing database %s" % (db_filename,))
# We need an exclusive lock here as we are making a big change to the database and we don't
# want other processes to get stomped on or stomp on us.
@@ -247,7 +249,7 @@
try:
q.execute(sql, query_params)
except:
- logger.err("Exception while executing SQL: %r %r" % (sql, query_params), id=self)
+ self.log.err("Exception while executing SQL: %r %r" % (sql, query_params))
raise
return q.fetchall()
finally:
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/static.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/static.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/static.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -71,6 +71,8 @@
"""
CalDAV-accessible L{DAVFile} resource.
"""
+ log = logger.getInstance(classid=("CalDAVFile",))
+
def __repr__(self):
if self.isCalendarCollection():
return "<%s (calendar collection): %s>" % (self.__class__.__name__, self.fp.path)
@@ -94,21 +96,21 @@
#
if self.fp.exists():
- logger.err("Attempt to create collection where file exists: %s" % (self.fp.path,), id=(self, "http",))
+ self.log.err("Attempt to create collection where file exists: %s" % (self.fp.path,))
raise HTTPError(StatusResponse(responsecode.NOT_ALLOWED, "File exists"))
if not os.path.isdir(os.path.dirname(self.fp.path)):
- logger.err("Attempt to create collection with no parent: %s" % (self.fp.path,), id=(self, "http",))
+ self.log.err("Attempt to create collection with no parent: %s" % (self.fp.path,))
raise HTTPError(StatusResponse(responsecode.CONFLICT, "No parent collection"))
#
# Verify that no parent collection is a calendar also
#
- logger.info("Creating calendar collection %s" % (self,), id=(self, "http",))
+ self.log.info("Creating calendar collection %s" % (self,))
def _defer(parent):
if parent is not None:
- logger.err("Cannot create a calendar collection within a calendar collection %s" % (parent,), id=(self, "http",))
+ self.log.err("Cannot create a calendar collection within a calendar collection %s" % (parent,))
raise HTTPError(ErrorResponse(
responsecode.FORBIDDEN,
(caldavxml.caldav_namespace, "calendar-collection-location-ok")
@@ -155,7 +157,7 @@
try:
rmdir(self.fp)
except Exception, e:
- logger.err("Unable to clean up after failed MKCOL (special resource type: %s): %s" % (e, resourceType,), id=(self, "http",))
+ self.log.err("Unable to clean up after failed MKCOL (special resource type: %s): %s" % (e, resourceType,))
return f
d = mkcollection(self.fp)
@@ -392,6 +394,9 @@
_checkParents = deferredGenerator(_checkParents)
class AutoProvisioningFileMixIn (AutoProvisioningResourceMixIn):
+
+ log = logger.getInstance(classid="AutoProvisioningFileMixIn", id=("Directory",))
+
def provision(self):
self.provisionFile()
return super(AutoProvisioningFileMixIn, self).provision()
@@ -403,7 +408,7 @@
if fp.exists():
return False
- logger.info("Provisioning file: %s" % (self,), id=(self, "Directory",))
+ self.log.info("Provisioning file: %s" % (self,))
if hasattr(self, "parent"):
parent = self.parent
@@ -449,6 +454,8 @@
Resource which provisions calendar home collections of a specific
record type as needed.
"""
+ log = logger.getInstance(classid="CalendarHomeTypeProvisioningFile", id=("Directory",))
+
def __init__(self, path, parent, recordType):
"""
@param path: the path to the file which will back the resource.
@@ -462,11 +469,11 @@
record = self.directory.recordWithShortName(self.recordType, name)
if record is None:
- logger.err("No directory record %r of type %r" % (name, self.recordType), id=(self, "Directory",))
+ self.log.err("No directory record %r of type %r" % (name, self.recordType))
return None
if not record.enabledForCalendaring:
- logger.err("Directory record %r of type %r is not enabled for calendaring" % (name, self.recordType), id=(self, "Directory",))
+ self.log.err("Directory record %r of type %r is not enabled for calendaring" % (name, self.recordType))
return None
child = CalendarHomeFile(self.fp.child(name).path, self, record)
Modified: CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/tap.py
===================================================================
--- CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/tap.py 2008-02-21 16:00:53 UTC (rev 2169)
+++ CalendarServer/branches/users/cdaboo/better-logging-2152/twistedcaldav/tap.py 2008-02-21 20:19:48 UTC (rev 2170)
@@ -337,6 +337,8 @@
options = CalDAVOptions
+ log = logger.getInstance(classid="CalDAVServiceMaker", id=("Startup",))
+
#
# default resource classes
#
@@ -354,8 +356,7 @@
directoryClass = namedClass(config.DirectoryService['type'])
- logger.info("Configuring directory service of type: %s"
- % (config.DirectoryService['type'],), id="Startup")
+ self.log.info("Configuring directory service of type: %s" % (config.DirectoryService['type'],))
baseDirectory = directoryClass(**config.DirectoryService['params'])
@@ -364,8 +365,7 @@
sudoDirectory = None
if config.SudoersFile and os.path.exists(config.SudoersFile):
- logger.info("Configuring SudoDirectoryService with file: %s"
- % (config.SudoersFile,), id="Startup")
+ self.log.info("Configuring SudoDirectoryService with file: %s" % (config.SudoersFile,))
sudoDirectory = SudoDirectoryService(config.SudoersFile)
sudoDirectory.realmName = baseDirectory.realmName
@@ -373,8 +373,7 @@
CalDAVResource.sudoDirectory = sudoDirectory
directories.insert(0, sudoDirectory)
else:
- logger.info("Not using SudoDirectoryService; file doesn't exist: %s"
- % (config.SudoersFile,), id="Startup")
+ self.log.info("Not using SudoDirectoryService; file doesn't exist: %s" % (config.SudoersFile,))
directory = AggregateDirectoryService(directories)
@@ -386,9 +385,9 @@
# Setup Resource hierarchy
#
- logger.info("Setting up document root at: %s" % (config.DocumentRoot,), id="Startup")
+ self.log.info("Setting up document root at: %s" % (config.DocumentRoot,))
- logger.info("Setting up principal collection: %r" % (self.principalResourceClass,), id="Startup")
+ self.log.info("Setting up principal collection: %r" % (self.principalResourceClass,))
principalCollection = self.principalResourceClass(
os.path.join(config.DocumentRoot, 'principals'),
@@ -396,7 +395,7 @@
directory
)
- logger.info("Setting up calendar collection: %r" % (self.calendarResourceClass,), id="Startup")
+ self.log.info("Setting up calendar collection: %r" % (self.calendarResourceClass,))
calendarCollection = self.calendarResourceClass(
os.path.join(config.DocumentRoot, 'calendars'),
@@ -404,7 +403,7 @@
'/calendars/'
)
- logger.info("Setting up root resource: %r" % (self.rootResourceClass,), id="Startup")
+ self.log.info("Setting up root resource: %r" % (self.rootResourceClass,))
root = self.rootResourceClass(
config.DocumentRoot,
@@ -416,7 +415,7 @@
# Configure default ACLs on the root resource
- logger.info("Setting up default ACEs on root resource", id="Startup")
+ self.log.info("Setting up default ACEs on root resource")
rootACEs = [
davxml.ACE(
@@ -425,10 +424,10 @@
),
]
- logger.info("Setting up AdminPrincipals", id=["Startup", "Security",])
+ self.log.info("Setting up AdminPrincipals", id=("Security",))
for principal in config.AdminPrincipals:
- logger.info("Added %s as admin principal" % (principal,), id=["Startup", "Security",])
+ self.log.info("Added %s as admin principal" % (principal,), id=("Security",))
rootACEs.append(
davxml.ACE(
@@ -439,14 +438,14 @@
)
)
- logger.info("Setting root ACL", id=["Startup", "Security",])
+ self.log.info("Setting root ACL", id=("Security",))
root.setAccessControlList(davxml.ACL(*rootACEs))
#
# Configure ancillary data
#
- logger.info("Setting up Timezone Cache", id="Startup")
+ self.log.info("Setting up Timezone Cache")
TimezoneCache().register()
#
@@ -461,7 +460,7 @@
realm = directory.realmName or ""
- logger.info("Configuring authentication for realm: %s" % (realm,), id=["Startup", "Security",])
+ self.log.info("Configuring authentication for realm: %s" % (realm,), id=("Security",))
for scheme, schemeConfig in config.Authentication.iteritems():
scheme = scheme.lower()
@@ -469,11 +468,11 @@
credFactory = None
if schemeConfig['Enabled']:
- logger.info("Setting up scheme: %s" % (scheme,), id=["Startup", "Security",])
+ self.log.info("Setting up scheme: %s" % (scheme,), id=("Security",))
if scheme == 'kerberos':
if not NegotiateCredentialFactory:
- logger.warn("Kerberos support not available", id=["Startup", "Security",])
+ self.log.warn("Kerberos support not available", id=("Security",))
continue
try:
@@ -483,7 +482,7 @@
else:
credFactory = NegotiateCredentialFactory(principal=principal)
except ValueError:
- logger.warn("Could not start Kerberos", id=["Startup", "Security",])
+ self.log.warn("Could not start Kerberos", id=("Security",))
continue
elif scheme == 'digest':
@@ -498,12 +497,12 @@
credFactory = BasicCredentialFactory(realm)
else:
- logger.err("Unknown scheme: %s" % (scheme,), id=["Startup", "Security",])
+ self.log.err("Unknown scheme: %s" % (scheme,), id=("Security",))
if credFactory:
credentialFactories.append(credFactory)
- logger.info("Configuring authentication wrapper", id=["Startup", "Security",])
+ self.log.info("Configuring authentication wrapper", id=("Security",))
authWrapper = auth.AuthenticationWrapper(
root,
@@ -518,7 +517,7 @@
# Configure the service
#
- logger.info("Setting up service", id="Startup")
+ self.log.info("Setting up service")
if config.ProcessType == 'Slave':
if config.MultiProcess['ProcessCount'] > 1 and config.MultiProcess['LoadBalancer']['Enabled']:
@@ -537,7 +536,7 @@
logObserver = logging.RotatingFileAccessLoggingObserver(config.AccessLogFile)
- logger.info("Configuring log observer: %s" % (logObserver,), id="Startup")
+ self.log.info("Configuring log observer: %s" % (logObserver,))
service = CalDAVService(logObserver)
@@ -562,13 +561,13 @@
config.BindSSLPorts = [config.SSLPort]
for port in config.BindHTTPPorts:
- logger.info("Adding server at %s:%s" % (bindAddress, port), id="Startup")
+ self.log.info("Adding server at %s:%s" % (bindAddress, port))
httpService = internet.TCPServer(int(port), channel, interface=bindAddress)
httpService.setServiceParent(service)
for port in config.BindSSLPorts:
- logger.info("Adding SSL server at %s:%s" % (bindAddress, port), id="Startup")
+ self.log.info("Adding SSL server at %s:%s" % (bindAddress, port))
contextFactory = ChainingOpenSSLContextFactory(config.SSLPrivateKey, config.SSLCertificate, certificateChainFile=config.SSLAuthorityChain)
httpsService = internet.SSLServer(int(port), channel, contextFactory, interface=bindAddress)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20080221/953ebb5e/attachment-0001.html
More information about the calendarserver-changes
mailing list