         switch (level) {
         case .All:
             let prettyPrint = options.contains(.JSONPrettyPrint)
-            let body = stringFromData(request.HTTPBody, prettyPrint: prettyPrint) ?? NullString
+            let body = string(from: request.httpBody, prettyPrint: prettyPrint) ?? NullString
             print("\(openSeparator)[Request] \(method) '\(url)':\n\n[Headers]\n\(headers)\n\n[Body]\n\(body)\(closeSeparator)")
             
         case .Info:

        let prettyPrint = options.contains(.JSONPrettyPrint)
        
        // request
        let requestMethod = request?.HTTPMethod ?? NullString
        let requestUrl = request?.URL?.absoluteString ?? NullString
        
        // response
        let responseStatusCode = httpResponse?.statusCode ?? 0
        let responseHeaders = prettyPrintedStringFromJSON(httpResponse?.allHeaderFields) ?? NullString
        let responseData = stringFromData(data, prettyPrint: prettyPrint) ?? NullString
        
        // time
        let elapsedTime = String(format: "[%.4f s]", self.elapsedTime)

            return self
        }
        
        startDate = Date()
        return logRequest(level: level, options: options).logResponse(level: level, options: options)
    }
    
    private func logRequest(level: LogLevel, options: [LogOption]) -> Self {
