[CalendarServer-changes] [11502] CalendarServer/trunk/twext
source_changes at macosforge.org
source_changes at macosforge.org
Wed Jul 10 14:03:02 PDT 2013
Revision: 11502
http://trac.calendarserver.org//changeset/11502
Author: wsanchez at apple.com
Date: 2013-07-10 14:03:01 -0700 (Wed, 10 Jul 2013)
Log Message:
-----------
Add addObserver() and removeObserver() to DefaultLogPublisher.
Modified Paths:
--------------
CalendarServer/trunk/twext/python/log.py
CalendarServer/trunk/twext/web2/log.py
Modified: CalendarServer/trunk/twext/python/log.py
===================================================================
--- CalendarServer/trunk/twext/python/log.py 2013-07-10 20:42:07 UTC (rev 11501)
+++ CalendarServer/trunk/twext/python/log.py 2013-07-10 21:03:01 UTC (rev 11502)
@@ -521,7 +521,10 @@
@param observer: An L{ILogObserver} to remove.
"""
- self._observers.remove(observer)
+ try:
+ self._observers.remove(observer)
+ except KeyError:
+ pass
def __call__(self, event):
@@ -779,10 +782,10 @@
...
# Send all events to the AMPObserver
- log.publisher.rootPublisher.addObserver(AMPObserver())
+ log.publisher.addObserver(AMPObserver(), filtered=False)
# Send filtered events to the FileObserver
- log.publisher.filteredPublisher.addObserver(FileObserver())
+ log.publisher.addObserver(AMPObserver())
With no observers added, the default behavior is that the legacy Twisted
logging system sees messages as controlled by L{LogLevelFilterPredicate}.
@@ -796,6 +799,33 @@
self.rootPublisher = LogPublisher(self.filters)
+ def addObserver(self, observer, filtered=True):
+ """
+ Registers an observer with this publisher.
+
+ @param observer: An L{ILogObserver} to add.
+
+ @param filtered: If true, registers C{observer} after filters are
+ applied; otherwise C{observer} will get all events.
+ """
+ if filtered:
+ self.filteredPublisher.addObserver(observer)
+ self.rootPublisher.removeObserver(observer)
+ else:
+ self.rootPublisher.addObserver(observer)
+ self.filteredPublisher.removeObserver(observer)
+
+
+ def removeObserver(self, observer):
+ """
+ Unregisters an observer with this publisher.
+
+ @param observer: An L{ILogObserver} to remove.
+ """
+ self.rootPublisher.removeObserver(observer)
+ self.filteredPublisher.removeObserver(observer)
+
+
def __call__(self, event):
self.rootPublisher(event)
Modified: CalendarServer/trunk/twext/web2/log.py
===================================================================
--- CalendarServer/trunk/twext/web2/log.py 2013-07-10 20:42:07 UTC (rev 11501)
+++ CalendarServer/trunk/twext/web2/log.py 2013-07-10 21:03:01 UTC (rev 11502)
@@ -201,11 +201,11 @@
def start(self):
"""Start observing log events."""
# Use the root publisher to bypass log level filtering
- log.publisher.rootPublisher.addObserver(self.emit)
+ log.publisher.addObserver(self.emit, filtered=False)
def stop(self):
"""Stop observing log events."""
- log.publisher.rootPublisher.removeObserver(self.emit)
+ log.publisher.removeObserver(self.emit)
class FileAccessLoggingObserver(BaseCommonAccessLoggingObserver):
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20130710/3715029d/attachment.html>
More information about the calendarserver-changes
mailing list