第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 ASP.NET Core 啟動期間使用 Serilog 和 Sentry

在 ASP.NET Core 啟動期間使用 Serilog 和 Sentry

C#
守著一只汪 2022-12-31 11:11:15
我正在嘗試將應用程序啟動期間拋出的錯誤記錄到哨兵。我正在使用帶有 Serilog 和 Sentry 的 ASP.NET Core 2.1.2。如果我只使用哨兵,它似乎工作正常。WebHost.CreateDefaultBuilder(args)    .UseSentry("dsn")    .UseStartup<Startup>()    .Build()    .Run();但是,如果我添加 Serilog,該應用程序在啟動期間不會發(fā)送任何事件,但如果控制器操作引發(fā)異常,它仍會繼續(xù)工作。WebHost.CreateDefaultBuilder(args)    .UseSerilog(        (hostingContext, loggerConfiguration) =>            loggerConfiguration                .Enrich.FromLogContext()                .MinimumLevel.Debug()                .WriteTo.Console()                .WriteTo.Sentry(s => {                    s.MinimumBreadcrumbLevel = LogEventLevel.Debug;                    s.MinimumEventLevel = LogEventLevel.Error;                }))    .UseSentry("dsn")    .UseStartup<Startup>()    .Build()    .Run();我正在嘗試從Startup 類中的ConfigureServices和方法登錄:Configurepublic class Startup{    public Startup(IConfiguration configuration, ILogger<Startup> logger)    {        Configuration = configuration;        Logger = logger;    }    public IConfiguration Configuration { get; }    public ILogger<Startup> Logger { get; }    public void ConfigureServices(IServiceCollection services)    {        Logger.LogError(new Exception("something went wrong while configuring services"), "ERROR");        services            .AddMvc()            .AddJsonOptions(options =>            {                options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";            })            .SetCompatibilityVersion(CompatibilityVersion.Version_2_1);    }    public void Configure(IApplicationBuilder app, IHostingEnvironment env)    {        Logger.LogError(new Exception("something went wrong while configuring app"), "ERROR");    }}我想這與每個記錄器的初始化順序有關,但我對啟動過程的了解不足以提出解決方案或至少是解釋。知道為什么會發(fā)生這種情況,我該如何解決?
查看完整描述

1 回答

?
MMMHUHU

TA貢獻1834條經(jīng)驗 獲得超8個贊

ASP.NET Core 日志基礎結構是在應用程序請求管道之前構建的。出于這個原因,我們只能通過日志集成捕獲應用程序啟動期間發(fā)生的異常。

 使用時捕獲應用程序初始化錯誤的原因Sentry.AspNetCore是此包依賴于Sentry.Extensions.Logging.

當您這樣做時UseSentry,它會在內(nèi)部掛鉤到框架日志基礎結構中。類中的崩潰Startup發(fā)生在應用程序實際構建之前(完成ConfigureServicesConfigure需要啟動應用程序),因此只有使用日志記錄集成,我們才能在此時捕獲錯誤。

添加Serilog到您的應用程序后,默認的日志記錄后端將被替換。這意味著現(xiàn)在已經(jīng)接管了對日志記錄基礎設施的掛鉤Sentry.Extensions.Logging不再生效。Serilog

因此,您也需要添加包Sentry.SerilogSerilog在這種情況下,添加兩個包后,只有當您通過集成初始化 SDK(就像您根據(jù)上一條評論所做的那樣)時,您才能捕獲引導錯誤。為了避免混淆(為什么我需要兩次提供我的 DSN?),示例中沒有這樣做,但在幕后發(fā)生的事情是,由 Serilog 完成的第一次初始化只有在該Startup過程完成之前才真正有用。初始化Sentry.AspNetCore后,它將關閉Serilog集成創(chuàng)建的第一個客戶端并刷新所有事件并將新客戶端添加到主范圍。這確保請求數(shù)據(jù)之類的東西也被添加到事件中。


查看完整回答
反對 回復 2022-12-31
  • 1 回答
  • 0 關注
  • 166 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號