首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哨兵/NLog集成没有登录到Sentry

哨兵/NLog集成没有登录到Sentry
EN

Stack Overflow用户
提问于 2020-06-11 18:57:59
回答 2查看 881关注 0票数 2

我正在使用最新的Sentry/NLog包(如下面所示),但由于某种原因,我的错误开始记录到NLog,而不是登录到Sentry。

--我可以看到Sentry正在被初始化,但是它从不记录任何东西!同时,这些错误被记录到NLog中,没有问题.

以下是我的相关套餐:

代码语言:javascript
复制
  <package id="Newtonsoft.Json" version="12.0.3" targetFramework="net472" />
  <package id="NLog" version="4.7.0" targetFramework="net472" />
  <package id="Sentry" version="2.1.1" targetFramework="net472" />
  <package id="Sentry.NLog" version="2.1.1" targetFramework="net472" />
  <package id="Sentry.PlatformAbstractions" version="1.1.0" targetFramework="net472" />
  <package id="Sentry.Protocol" version="2.1.1" targetFramework="net472" />
  <package id="System.Collections.Immutable" version="1.5.0" targetFramework="net472" />

这是我的NLog配置文件(出于安全原因,我删除了DSN ):

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      throwConfigExceptions="true">
  <extensions>
    <add assembly="Sentry.NLog" />
  </extensions>
  <targets async="true">
    <target name="SentryLogger" xsi:type="Sentry"
      dsn="{removed for security reasons...}"
      environment="${appsetting:item=Environment:default=Staging}"
      InitializeSdk="true"
      layout="${message}"
      breadcrumbLayout="${message}"
      minimumBreadcrumbLevel="Debug"
      minimumEventLevel="Error">
      <options
            attachStacktrace="true"
            sendDefaultPii="true"
            shutdownTimeoutSeconds="5"
            includeEventDataOnBreadcrumbs="true" />
    </target>
    
    <target name="default" xsi:type="File"
      fileName="${basedir}/logs/${shortdate}.log"
      archiveFileName="${basedir}/logs/archive-log/app-log.{#}.txt"
      archiveEvery="Day"
      archiveNumbering="Rolling"
      maxArchiveFiles="30" />
  </targets>
  <rules>
    <logger name="*" writeTo="default" />
    <logger name="*" minlevel="Error" writeTo="SentryLogger" />
  </rules>
</nlog>

有什么理由可以解释为什么NLog会工作而不是Sentry呢?我在同一解决方案中有其他项目,正确地登录到Sentry和NLog,而不是这个!

编辑:--我检查了NLog内部日志,它似乎是写给Sentry的,但它从未出现在Sentry上的UI中。内部日志文件中似乎也没有任何错误。

代码语言:javascript
复制
2020-06-11 16:53:31.5829 Trace AsyncWrapper(Name=default): Throttled timer scheduled
2020-06-11 16:53:31.5829 Trace AsyncWrapper(Name=SentryLogger): Throttled timer scheduled
2020-06-11 16:53:31.5920 Trace AsyncWrapper(Name=SentryLogger): Writing 1 events (Timer)
2020-06-11 16:53:31.5920 Trace AsyncWrapper(Name=default): Writing 1 events (Timer)

编辑:在通过Nuget将Sentry.NLog包从2.1.1更新到2.1.4之后,我在NLog内部日志文件中收到了一个System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel.错误!我能够通过将System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;添加到Global.asax.cs文件来解决这个问题!问题解决了!谢谢你,罗尔夫·克里斯滕森!

代码语言:javascript
复制
2020-06-25 16:50:55.8958 Debug Event queued up.
2020-06-25 16:50:55.9198 Debug Configuring the scope.
2020-06-25 16:50:56.2788 Debug Event 1338f238cd484cc7a0a288133306718c in-flight to Sentry. #1 in queue.
2020-06-25 16:50:56.4968 Error Error while processing event 1338f238cd484cc7a0a288133306718c: System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel.
   at System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult, TransportContext& context)
   at System.Net.Http.HttpClientHandler.GetRequestStreamCallback(IAsyncResult ar)
   --- End of inner exception stack trace ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Sentry.Internal.Http.GzipBufferedRequestBodyHandler.<SendAsync>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Sentry.Internal.Http.RetryAfterHandler.<SendAsync>d__8.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Sentry.Internal.Http.HttpTransport.<CaptureEventAsync>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
   at Sentry.Internal.BackgroundWorker.<WorkerAsync>d__18.MoveNext(). #1 in queue.
EN

回答 2

Stack Overflow用户

发布于 2020-06-24 08:59:48

如果它只是静默地未能将错误发送到Sentry,而内部日志中没有条目,我将检查您的哨兵DSN,然后双倍和三次检查它:)确保在查找sentry中的错误时,您正在查看正确的项目,并且将环境下拉设置为所有环境。如果您100%确信DSN是正确的,请尝试在nlog标记中添加atribute throwExceptions="true“。这可能会带来一些新线索。

票数 2
EN

Stack Overflow用户

发布于 2022-11-29 18:51:33

在我的例子中,它没有将异常事件发送给Sentry,因为它被现有的日志服务提供程序吞没了(可能是默认的)。修复方法是更新Program.cs文件以显式使用NLog,然后删除appsettings.json中的默认日志对象。

在这里找到了修复程序:https://programmingcsharp.com/nlog-net-core/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62331587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档