Performance and overhead.
Observability should not become your next performance problem. On the published BenchmarkDotNet run (same machine, same payload), ArgusLog.Info averaged 360 ns versus 1,158 ns for ILogger + Serilog — about 3.2× faster, with similar memory (668 B vs 632 B). Automatic [LogMethod] averaged 621 ns versus 4,802 ns for the matching hand-written ILogger ENTER/EXIT — about 7.7× faster and 1.6× less memory.
Environment
Published numbers come from TestLibrary/TestLibrary.Benchmark on an Apple M4 Pro, BenchmarkDotNet 0.15.4. They are not a promise for every CPU, GC mode, or sink.
.NET version
That run used .NET 10.0.2. ArgusLogs packages also multi-target .NET 5–10 — re-measure on the TFM you ship.
Methodology
Comparisons use BenchmarkDotNet fair pairs: equivalent work on the same machine and payload. Example pair 1: one Information-level line versus one ArgusLog.Info. Example pair 2: automatic [LogMethod] versus hand-written ILogger ENTER/EXIT. Ratio below 1.00 means faster than the Serilog/ILogger baseline in that pair.
Baseline
The published baseline is Microsoft.Extensions.Logging + Serilog for the Information-line pair, and equivalent ILogger enter/exit for the method pair — not a competing APM agent.
ArgusLogs configuration in the bench
The bench exercises ArgusLog.Info and [LogMethod] in-process. It is not a full ASP.NET Core + SQL + HTTP tracker profile. Production cost depends on log level, payload size, and sinks — see /best-practices/payload-size.
Published results
Fair pair 1: ArgusLog.Info 359.68 ns (ratio 0.31 vs Serilog 1,158 ns class), similar memory (668 B vs 632 B). Fair pair 2: [LogMethod] 620.97 ns vs ILogger equivalent 4,801.51 ns (~7.7× faster, ~1.6× less memory in that pair). Treat means as environment-specific.
Limitations
These are microbenchmarks, not production percentiles. We do not invent additional benches here. Full tables: /compare/libraries/benchmarks. Validate in your workload before rollout.