[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