         if let error = event.error {
             let errorMessage: String
             switch error {
-            case let error as NSError:
-                errorMessage = error.localizedDescription
+            case let error as CustomDebugStringConvertible:
+                errorMessage = error.debugDescription
+            case let error as CustomStringConvertible:
+                errorMessage = error.description
             default:
                 errorMessage = String(error)
             }
             string += " [ERROR: \(errorMessage)]"
         }
-
+        
         return string
     }
     

    public final func recordFromEvent<M>(event: Event<M>) -> Record {
        return Record(date: event.date, description: self.stringFromEvent(event))
    }

    public func stringFromEvent<M>(event: Event<M>) -> String
    {
        var string = components.map({ $0.stringForEvent(event) }).joinWithSeparator("")

    public init(components: [Component]) {
        self.components = components
    }
    
    public enum Style {
        case Default, Simple, Full
    }
