 	///
 	/// - returns: Signal producer that, when started, logs the fired events.
 	public func logEvents(identifier: String = "",
-	                      events: Set<LoggingEvent.SignalProducer> = LoggingEvent.SignalProducer.allEvents,
+	                      events: Set<LoggingEvent.SignalProducer> = Set(LoggingEvent.SignalProducer.allCases),
 	                      fileName: String = #file,
 	                      functionName: String = #function,
 	                      lineNumber: Int = #line,


/// A namespace for logging event types.
public enum LoggingEvent {
	public enum Signal: String {
		case value, completed, failed, terminated, disposed, interrupted

		public static let allEvents: Set<Signal> = [
			.value, .completed, .failed, .terminated, .disposed, .interrupted,
		]
	}

	public enum SignalProducer: String {
		case starting, started, value, completed, failed, terminated, disposed, interrupted

		public static let allEvents: Set<SignalProducer> = [
			.starting, .started, .value, .completed, .failed, .terminated, .disposed, .interrupted,
		]
	}
}


	///   - logger: Logger that logs the events.
	///
	/// - returns: Signal that, when observed, logs the fired events.
	public func logEvents(identifier: String = "", events: Set<LoggingEvent.Signal> = Set(LoggingEvent.Signal.allCases), fileName: String = #file, functionName: String = #function, lineNumber: Int = #line, logger: @escaping EventLogger = defaultEventLog) -> Signal<Value, Error> {
		let logContext = LogContext(events: events,
		                            identifier: identifier,
		                            fileName: fileName,
