     */
     public func critical(
         @autoclosure(escaping) message: () -> String,
-        userInfo: [String: AnyObject],
+        userInfo: [String: AnyObject] = [:],
         functionName: String = __FUNCTION__,
         filePath: String = __FILE__,
         lineNumber: Int = __LINE__,

    */
    public func debug(
        @autoclosure(escaping) message: () -> String,
        userInfo: [String: AnyObject],
        functionName: String = __FUNCTION__,
        filePath: String = __FILE__,
        lineNumber: Int = __LINE__,
        columnNumber: Int = __COLUMN__
    ) {
        self.log(message, userInfo: userInfo, level: .Debug, functionName: functionName, filePath: filePath, lineNumber: lineNumber, columnNumber: columnNumber)
    }

    /**
    Log an `Info` entry. Exclude all arguments except `message`.

    :param: message The message to log.
    */
    public func info(
        @autoclosure(escaping) message: () -> String,
        functionName: String = __FUNCTION__,
        filePath: String = __FILE__,
        lineNumber: Int = __LINE__,
        columnNumber: Int = __COLUMN__
    ) {
        self.info(message, userInfo: [:], functionName: functionName, filePath: filePath, lineNumber: lineNumber, columnNumber: columnNumber)
    }

    /**

    */
    public func warning(
        @autoclosure(escaping) message: () -> String,
        userInfo: [String: AnyObject] = [:],
        functionName: String = __FUNCTION__,
        filePath: String = __FILE__,
        lineNumber: Int = __LINE__,
        columnNumber: Int = __COLUMN__
    ) {
        self.log(message, userInfo: userInfo, level: .Warning, functionName: functionName, filePath: filePath, lineNumber: lineNumber, columnNumber: columnNumber)
    }

    /**
