From 3c2a3b92d82b8c99554a83db39f803390a0f8cbb Mon Sep 17 00:00:00 2001 From: Jimmy McDermott Date: Mon, 15 Jan 2018 16:22:02 -0500 Subject: [PATCH] file and line numbers --- Sources/Bugsnag/Middleware.swift | 2 +- Sources/Bugsnag/PayloadTransformer.swift | 21 ++++++++------- Sources/Bugsnag/Reporter.swift | 33 +++++++++++++++--------- 3 files changed, 33 insertions(+), 23 deletions(-) diff --git a/Sources/Bugsnag/Middleware.swift b/Sources/Bugsnag/Middleware.swift index 9db4424..eb6a39b 100644 --- a/Sources/Bugsnag/Middleware.swift +++ b/Sources/Bugsnag/Middleware.swift @@ -19,7 +19,7 @@ public final class Middleware: HTTP.Middleware, ConfigInitializable { do { return try next.respond(to: request) } catch let error { - try self.reporter.report(error: error, request: request) + try self.reporter.report(error: error, request: request, lineNumber: nil, funcName: nil, fileName: nil) throw error } } diff --git a/Sources/Bugsnag/PayloadTransformer.swift b/Sources/Bugsnag/PayloadTransformer.swift index d6b6b2f..ecf8751 100644 --- a/Sources/Bugsnag/PayloadTransformer.swift +++ b/Sources/Bugsnag/PayloadTransformer.swift @@ -38,16 +38,17 @@ internal struct PayloadTransformer: PayloadTransformerType { userName: String?, userEmail: String? ) throws -> JSON { - - let stacktrace = Node([ - Node([ - "file": Node((fileName ?? "") + ": " + message), - "lineNumber": Node(lineNumber ?? 0), - "columnNumber": 0, - "method": Node(funcName ?? "NA") - ]) - ]) - + + let internalStacktraceNode = try Node(node: + ["file": fileName ?? nil, + "lineNumber": Node(lineNumber ?? 0), + "columnNumber": 0, + "method": Node(funcName ?? "NA") + ] + ) + + let stacktrace = Node([internalStacktraceNode]) + let app: Node = Node([ "releaseStage": Node(environment.description), "type": "Vapor" diff --git a/Sources/Bugsnag/Reporter.swift b/Sources/Bugsnag/Reporter.swift index 351896e..5721dc0 100644 --- a/Sources/Bugsnag/Reporter.swift +++ b/Sources/Bugsnag/Reporter.swift @@ -3,9 +3,9 @@ import HTTP import Core public protocol ReporterType { - func report(error: Error, request: Request?, userId: String?, userName: String?, userEmail: String?) throws + func report(error: Error, request: Request?, userId: String?, userName: String?, userEmail: String?, lineNumber: Int?, funcName: String?, fileName: String?) throws - func report(error: Error, request: Request?) throws + func report(error: Error, request: Request?, lineNumber: Int?, funcName: String?, fileName: String?) throws func report( error: Error, @@ -14,6 +14,9 @@ public protocol ReporterType { userId: String?, userName: String?, userEmail: String?, + lineNumber: Int?, + funcName: String?, + fileName: String?, completion: (() -> ())? ) throws } @@ -23,8 +26,8 @@ public enum Severity: String { } public final class Reporter: ReporterType { - public func report(error: Error, request: Request?, userId: String?, userName: String?, userEmail: String?) throws { - report(error: error, request: request, severity: .error, userId: userId, userName: userName, userEmail: userEmail, completion: nil) + public func report(error: Error, request: Request?, userId: String?, userName: String?, userEmail: String?, lineNumber: Int?, funcName: String?, fileName: String?) throws { + report(error: error, request: request, severity: .error, userId: userId, userName: userName, userEmail: userEmail, lineNumber: lineNumber, funcName: funcName, fileName: fileName, completion: nil) } @@ -48,8 +51,8 @@ public final class Reporter: ReporterType { self.defaultFilters = defaultFilters } - public func report(error: Error, request: Request?) { - report(error: error, request: request, severity: .error, userId: nil, userName: nil, userEmail: nil, completion: nil) + public func report(error: Error, request: Request?, lineNumber: Int?, funcName: String?, fileName: String?) { + report(error: error, request: request, severity: .error, userId: nil, userName: nil, userEmail: nil, lineNumber: lineNumber, funcName: funcName, fileName: fileName, completion: nil) } public func report( @@ -59,6 +62,9 @@ public final class Reporter: ReporterType { userId: String?, userName: String?, userEmail: String?, + lineNumber: Int?, + funcName: String?, + fileName: String?, completion complete: (() -> ())? ) { guard let error = error as? AbortError else { @@ -67,6 +73,9 @@ public final class Reporter: ReporterType { metadata: nil, request: request, severity: severity, + lineNumber: lineNumber, + funcName: funcName, + fileName: fileName, userId: userId, userName: userName, userEmail: userEmail, @@ -88,9 +97,9 @@ public final class Reporter: ReporterType { metadata: metadata, request: request, severity: severity, - lineNumber: nil, - funcName: nil, - fileName: nil, + lineNumber: lineNumber, + funcName: funcName, + fileName: fileName, userId: userId, userName: userName, userEmail: userEmail, @@ -105,9 +114,9 @@ public final class Reporter: ReporterType { metadata: Node?, request: Request?, severity: Severity, - lineNumber: Int? = #line, - funcName: String? = #function, - fileName: String? = #file, + lineNumber: Int? = nil, + funcName: String? = nil, + fileName: String? = nil, userId: String?, userName: String?, userEmail: String?,