Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Pavel Plojhar:7.10.2021 22:09

Zdravím,
mám REST API a potřebuji logovat všechny odpovědi od tohoto API.
Udělal jsem si tedy mlddleware (pro zjednodušení a ukázku jsem ho přidal rovnou do Startup.cs):

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {

        app.Use(async (context, next) =>
        {
            // Do work that doesn't write to the Response.
            await next.Invoke();
            // Do logging or other work that doesn't write to the Response.
            Debug.WriteLine($"Response: {context.Response.Body}");
        });

        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
            app.UseSwagger();
            app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "WebApiBasicAuth v1"));
        }

        app.UseHttpsRedirection();

        app.UseRouting();

        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });
    }
}

Otázka zní: jak zobrazím odpověď? context.Respon­se.Body vrací: Microsoft.AspNet­Core.Server.I­IS.Core.HttpRes­ponseStream
Thanks

Zkusil jsem:

using (var stream = context.Response.Body)
{
    var reader = new StreamReader(stream, Encoding.UTF8);
    var responseString = reader.ReadToEnd();
}

končí chybou: System.Argumen­tException: Stream was not readable.
Proč?

Chci docílit: Potřebuji zalogovat všechny odpovědi od API

 
Odpovědět
7.10.2021 22:09
Avatar
Peter Janičina:27.10.2021 12:21

Ja pouziva na logovanie Serilog

Log.Logger = new LoggerConfiguration()
            .MinimumLevel.Debug()
            .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
            .Enrich.FromLogContext()
            .WriteTo.File(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + "\\serilog.txt")
            .CreateLogger();
 
Nahoru Odpovědět
27.10.2021 12:21
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.