我从 Mindscape 分叉了 NLog Raygun,以在 NLog 中提供更多 Raygun 设置。
一个 RaygunTarget 被创建并且需要重写Write
方法如下 NLog 文档(https://github.com/NLog/NLog/wiki/How-to-write-a-custom-target)。
要向 Raygun 发送异常,请遵循以下代码
protected override void Write(LogEventInfo logEvent)
{
_raygunClient ??= (_raygunClient = CreateRaygunClient());
...
_raygunClient.SendInBackground(exception, tags, userCustomData);
}
SendInBackground
返回一个我们不能将Write
方法标记为的任务,async void
因为它不是使用的情况async void
。
一切正常。我们大摇大摆地拥有 Healthcheck。我想检查 NLog Raygun 是否发送成功,但我不知道如何SendInBackground
在 API Key 无效的情况下捕获异常。我的意思是有没有更好的方法来测试这个 RaygunTarget 是否可以成功地向 Raygun 发送消息?
如果我提供一个名为 ThrowOnError 的设置并在Write
方法中像这样更新
protected override void Write(LogEventInfo logEvent)
{
_raygunClient ??= (_raygunClient = CreateRaygunClient());
...
var task = _raygunClient.SendInBackground(exception, tags, userCustomData);
if (_setting.ThrowOnError) task.Wait();
}
它有效,但一个问题是:这是一个好方法吗?就个人而言,我认为这不是因为它引入了基于设置的不同行为或副作用。