ArgusLogs.UI
1.0.11
dotnet add package ArgusLogs.UI --version 1.0.11
NuGet\Install-Package ArgusLogs.UI -Version 1.0.11
<PackageReference Include="ArgusLogs.UI" Version="1.0.11" />
<PackageVersion Include="ArgusLogs.UI" Version="1.0.11" />
<PackageReference Include="ArgusLogs.UI" />
paket add ArgusLogs.UI --version 1.0.11
#r "nuget: ArgusLogs.UI, 1.0.11"
#:package ArgusLogs.UI@1.0.11
#addin nuget:?package=ArgusLogs.UI&version=1.0.11
#tool nuget:?package=ArgusLogs.UI&version=1.0.11
ArgusLogs.UI
A zero-dependency, high-performance, embedded log-viewer middleware package for ASP.NET Core with multi-target support across .NET 5.0, 6.0, 7.0, 8.0, 9.0, and 10.0.
Key Features
- 🚀 Zero External Infrastructure: Streams local log files in reverse order without requiring ClickHouse, PostgreSQL, or external databases.
- 📦 Embedded UI: 100% self-contained dark-mode dashboard (zero npm, zero CDN dependencies).
- 🔒 ArgusLogs.Core Integration: Auto-discovers and validates license keys (ECDsa NIST P-256) and configuration (
LogFilePath,LogFileNameFormat,Format,UseShortKeys). - ⚡ O(1) Reverse File Streaming: 64KB seek chunks from EOF backward to display the latest logs first with minimal memory overhead.
- 🛠️ SwaggerUI-Style DX: Single-line middleware registration via
app.UseArgusUI().
Quickstart
Minimal APIs (.NET 6–10)
using ArgusLogs.UI;
var builder = WebApplication.CreateBuilder(args);
// Register Core Logging
builder.Services.AddArgusLogging(options =>
{
options.LicenseKey = "YOUR-ARGUS-LICENSE-KEY";
});
// Optional: Register UI Services
builder.Services.AddArgusUI();
var app = builder.Build();
// Enable Embedded Log Viewer Dashboard
app.UseArgusUI(options =>
{
options.RoutePrefix = "/argus-logs";
});
app.Run();
Navigate to http://localhost:<port>/argus-logs to inspect live structured logs.
Security
Protect the embedded dashboard in production with the built-in login page or host-app authorization filters.
Built-in login page
app.UseArgusUI(options =>
{
options.RoutePrefix = "/argus-logs";
options.RequireLogin("admin", "change-me-in-production");
options.SessionDuration = TimeSpan.FromHours(8);
});
When RequireAuthentication is enabled:
- Unauthenticated visitors are redirected to
/argus-logs/login - API routes return
401 Unauthorizeduntil a session cookie is issued - Sessions are stored in an HttpOnly cookie signed with HMAC-SHA256
ASP.NET Core authentication integration
If your app already authenticates users, add a filter instead of (or in addition to) the built-in login:
using ArgusLogs.UI.Options;
app.UseArgusUI(options =>
{
options.RoutePrefix = "/argus-logs";
options.AddAuthorizationFilter(new AspNetCoreUserAuthorizationFilter());
});
Place UseArgusUI after UseAuthentication() so HttpContext.User is populated.
License plan limits (Free tier)
ArgusLogs.UI enforces plan-based caps automatically:
| Limit | Free / Community | Pro | Enterprise |
|---|---|---|---|
TieredStorage RetentionDays (max) |
7 | 90 | 365 |
TieredStorage BatchSize (max) |
5,000 | 50,000 | 200,000 |
Concurrent /argus-logs viewers |
1 | 10 | 50 |
| Log rows per API query | 150 | 500 | 2,000 |
When TieredStorage is registered, AddArgusUI() clamps RetentionDays and BatchSize to the licensed maximum. Anonymous viewer cookies receive 429 Too Many Requests when the concurrent limit is exceeded. Authenticated sign-in replaces the least-recently-active session so a new login can displace an existing viewer instead of being blocked.
GET /argus-logs/api/license-limits
Local-only access
options.AddAuthorizationFilter(new LocalRequestsOnlyAuthorizationFilter());
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 is compatible. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- No dependencies.
-
net5.0
- No dependencies.
-
net6.0
- No dependencies.
-
net7.0
- No dependencies.
-
net8.0
- No dependencies.
-
net9.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.11 | 85 | 9/12/2026 |
| 1.0.11-alpha.2608292142 | 70 | 8/29/2026 |
| 1.0.11-alpha.2608291853 | 60 | 8/29/2026 |
Multi-target package: net5.0, net6.0, net7.0, net8.0, net9.0, net10.0. One version for all TFMs. Docs: https://arguslogs.com/