向 Bugsnag 报告错误。
更新你的 Package.swift
文件。
.package(url: "https://github.com/nodes-vapor/bugsnag.git", from: "4.0.0")
更新 configure.swift
public func configure(_ app: Application) throws {
// Configure Bugsnag.
app.bugsnag.configuration = .init(
apiKey: "<YOUR BUGSNAG API KEY>",
releaseStage: app.environment.name,
shouldReport: app.environment.name != "local"
)
// Add Bugsnag middleware.
app.middleware.use(BugsnagMiddleware())
}
BugsnagMiddleware
将自动报告你的路由处理程序抛出的错误。你可以从 Application
或 Request
手动报告错误。
// Reporting from Application.
app.bugsnag.report(Abort(.internalServerError))
// Reporting from Request.
app.get("test") { req in
req.bugsnag.report(Abort(.upgradeRequired))
return HTTPStatus.ok
}
通过遵循 BugsnagError
协议,你可以完全控制错误的报告方式。它具有以下属性
名称 | 类型 | 函数 | 默认值 |
---|---|---|---|
shouldReport |
Bool |
通过返回 false 选择不报告错误 |
true |
severity |
Severity |
指示错误严重程度 (.info |.warning |.error ) |
.error |
metadata |
[String: CustomDebugStringConvertible] |
包含在报告中的附加元数据 | [:] |
将你的 Authenticatable
模型遵循 BugsnagUser
可以让你轻松地将数据与报告关联起来。
extension TestUser: BugsnagUser {
var bugsnagID: CustomStringConvertible? {
self.id
}
}
配置所有你希望 Bugsnag 报告的用户模型。
// Add to configure.swift.
app.bugsnag.users.add(TestUser.self)
Bugsnag 将自动检查 Vapor 的认证 API 以获取配置的用户类型,并在用户登录时报告用户的标识符。
痕迹使你能够将自定义事件附加到你的报告中。使用 Request
上的便捷函数留下痕迹。
req.bugsnag.breadcrumb(
name: "Something happened!",
type: .manual,
metadata: ["foo": "bar"]
)
痕迹类型由 Bugsnag 提供
enum BugsnagBreadcrumbType {
case error
case log
case manual
case navigation
case process
case request
case state
case user
}
通常,你会在 Bugsnag 的报告中收到诸如标头、查询参数或 post body 字段等信息。为了确保你不会跟踪敏感信息,你可以使用应过滤掉的字段列表来配置 Bugsnag
app.bugsnag.configuration = .init(
apiKey: "foo",
releaseStage: "debug",
keyFilters: ["email", "password"]
)
在这种情况下,Bugsnag 报告将隐藏键/名称为 email 和 password 的标头字段、查询参数或 post body json 字段。
此软件包由 Nodes 的 Vapor 团队开发和维护。
此软件包是在 MIT 许可证 下开源的软件。