'@param observer: An observer to which this observer will forward
events when C{predictates} yield a positive result.
@type observer: L{ILogObserver}
@param predicates: Predicates to apply to events before forwarding to
the wrapped observer.
@type predicates: ordered iterable of predicates
@param negativeObserver: An observer to which this observer will
forward events when C{predictates} yield a negative result.
@type negativeObserver: L{ILogObserver}'

def __init__(self, observer, predicates, negativeObserver=(lambda event: None)):

    self._observer = observer
    self._shouldLogEvent = partial(shouldLogEvent, list(predicates))
    self._negativeObserver = negativeObserver
