     }
 
     /**
-    Log a `Notice` entry. Exclude all arguments except `message` and `userInfo`.
+    Log a `Notice` entry.
 
-    :param: message The message to log.
-    :param: userInfo A dictionary of additional values for endpoints to consider.
+    - parameter message: The message to log.
+    - parameter userInfo: (optional) A dictionary of additional values for endpoints to consider.
     */
     public func notice(
         @autoclosure(escaping) message: () -> String,

    }

    /**
    Log a `Debug` entry. Exclude all arguments except `message` and `userInfo`.

    :param: message The message to log.
    :param: userInfo A dictionary of additional values for endpoints to consider.
    */
    public func debug(
        @autoclosure(escaping) message: () -> String,

import Foundation


/// The main logging API for application code. An instance of this class dispatches log entries to logging endpoints.
public final class LXLogger {
    /// The collection of log endpoints that successfully initialized.
    private let endpoints: [LXEndpoint]

    /**
    Initialize a logger. Any endpoints that fail initialization are discarded.

    - parameter endpoints: An array of log endpoints to output entries to.
    */
    public init(endpoints: [LXEndpoint?]) {
        self.endpoints = endpoints.filter({ $0 != nil }).map({ $0! })
        assert(!self.endpoints.isEmpty, "A logger instance has been initialized, but no valid endpoints were provided.")
    }

    /// Initialize a basic logger that writes to the console (`stdout`) with default settings.
    public convenience init() {
        self.init(endpoints: [LXConsoleEndpoint()])
    }
