Add SEQ logging/middleware

This commit is contained in:
lumijiez
2025-06-09 20:28:21 +03:00
parent a695e1cce6
commit 5d041a008b
7 changed files with 98 additions and 5 deletions

View File

@@ -15,6 +15,8 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Serilog.AspNetCore" Version="9.0.0" />
<PackageReference Include="Serilog.Sinks.Seq" Version="9.0.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="8.1.1" />
</ItemGroup>

View File

@@ -0,0 +1,37 @@
using System.Diagnostics;
namespace Imprink.WebApi.Middleware;
public class RequestTimingMiddleware(RequestDelegate next, ILogger<RequestTimingMiddleware> logger)
{
public async Task InvokeAsync(HttpContext context)
{
var stopwatch = Stopwatch.StartNew();
try
{
await next(context);
}
finally
{
stopwatch.Stop();
var elapsedMs = stopwatch.ElapsedMilliseconds;
var method = context.Request.Method;
var path = context.Request.Path;
var statusCode = context.Response.StatusCode;
logger.LogInformation(
"Request {Method} {Path} completed in {ElapsedMs}ms with status code {StatusCode}",
method, path, elapsedMs, statusCode);
}
}
}
public static class RequestTimingMiddlewareExtensions
{
public static IApplicationBuilder UseRequestTiming(this IApplicationBuilder builder)
{
return builder.UseMiddleware<RequestTimingMiddleware>();
}
}

View File

@@ -1,7 +1,17 @@
using Imprink.WebApi;
using Serilog;
var builder = WebApplication.CreateBuilder(args);
Log.Logger = new LoggerConfiguration()
.WriteTo.Seq("http://seq:5341",
restrictedToMinimumLevel: Serilog.Events.LogEventLevel.Information)
.Enrich.FromLogContext()
.WriteTo.Console()
.CreateLogger();
builder.Host.UseSerilog();
Startup.ConfigureServices(builder);
var app = builder.Build();

View File

@@ -5,6 +5,7 @@ using Imprink.Domain.Repositories;
using Imprink.Infrastructure;
using Imprink.Infrastructure.Database;
using Imprink.Infrastructure.Repositories;
using Imprink.WebApi.Middleware;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.EntityFrameworkCore;
@@ -94,6 +95,8 @@ public static class Startup
Console.WriteLine($"An error occurred while applying migrations: {ex.Message}");
}
}
app.UseRequestTiming();
if (env.IsDevelopment())
{