SqlCommandMonitor 1.0.8
Sql Command Monitor
SqlCommandMonitor je NuGet balíček pro snadné sledování a logování všech SQL příkazů (DbCommand) prováděných v aplikacích ASP.NET Core s Entity Framework Core.
Umožňuje zachytávat prováděné SQL příkazy, dobu jejich trvání, počet ovlivněných řádků a související informace o HTTP requestu a volající metodě.
Funkce
- Zachycení SQL příkazů pro všechny typy
DbContext. - Logování:
- Časové razítko (
Timestamp) - SQL příkaz (
SqlCommand) - Počet ovlivněných řádků (
AffectedRows) - Doba vykonání v ms (
DurationMs) - Request ID (
RequestId) - HTTP route (
HttpRoute) - HTTP metoda + cesta - Volající metoda (
CallingMethod) - Zdrojový soubor:řádek (
SourceFileLine)
- Časové razítko (
- Podpora více DbContextů současně.
- Middleware pro asociaci SQL příkazů s HTTP requesty.
- Jednoduchá registrace do DI kontejneru.
Instalace
dotnet add package SqlCommandMonitor
Registrace
builder.Services.AddSqlCommandMonitor(builder.Configuration);
Implementace
builder.Services.AddDbContext<AppDbContext>((sp, options) =>
{
options.UseSqlServer(builder.Configuration.GetConnectionString("default"), opts =>
{
opts.MigrationsHistoryTable("MigrationHistory_App");
});
options.ApplySqlCommandMonitorInterceptor(sp);
});
Přidání middleware do pipeline
Middleware by měl být registrován po middlewarech, které mohou spouštět SQL příkazy (např. endpoint), aby bylo možné správně asociovat SQL příkazy s HTTP requestem:
app.UseSqlCommandMonitor();
Konfigurace
Možnosti monitorování SQL příkazů lze nakonfigurovat pomocí SqlCommandMonitorOptions při registraci služby.
{
"SqlCommandMonitorOptions": {
"Enabled": true,
"MaxBufferSize": 1000,
"MinimumLogLevel": "Warning",
"WarningThresholdMs": 50
}
}
Enabled– zapnutí / vypnutí monitorováníMaxBufferSize– maximální počet uložených záznamůMinimumLogLevel– minimální úroveň logováníWarningThresholdMs– prahová hodnota v milisekundách pro logování SQL příkazů jakoWarning(příkazy s kratší dobou trvání jsou logovány jakoInformation)
Pokud není konfigurace uvedena v appsettings.json, použijí se následující výchozí hodnoty:
Enabled– trueMaxBufferSize– 1000MinimumLogLevel– InformationWarningThresholdMs– 50
Tok zpracování SQL příkazů
DbCommandMonitorInterceptor
│
▼
MonitorData
│
├──► MonitorDataBuffer.Add(...) (vždy → nejstarší záznamy jsou zahazovány dle MaxBufferSize)
│
│
└──► MonitorDataLogger.Log(...) (filtrováno → MinimumLogLevel, WarningThresholdMs)
Každý zachycený SQL příkaz je vždy přidán do bufferu.
Při překročení
MaxBufferSizejsou automaticky odstraněny nejstarší záznamy.Filtrace se aplikuje výhradně na logování.
Showing the top 20 packages that depend on SqlCommandMonitor.
| Packages | Downloads |
|---|---|
|
SqlCommandMonitor.Dashboard
Dashboard pro monitorování SQL příkazů v reálném čase.
|
57 |
|
SqlCommandMonitor.Dashboard
Dashboard pro monitorování SQL příkazů v reálném čase.
|
13 |
|
SqlCommandMonitor.Dashboard
Dashboard pro monitorování SQL příkazů v reálném čase.
|
12 |
|
SqlCommandMonitor.Dashboard
Dashboard pro monitorování SQL příkazů v reálném čase.
|
11 |
|
SqlCommandMonitor.Dashboard
Dashboard pro monitorování SQL příkazů v reálném čase.
|
10 |
|
SqlCommandMonitor.Dashboard
Dashboard pro monitorování SQL příkazů v reálném čase.
|
7 |