SanitizedHttpClientLogger 0.1.0
dotnet add package SanitizedHttpClientLogger --version 0.1.0
NuGet\Install-Package SanitizedHttpClientLogger -Version 0.1.0
<PackageReference Include="SanitizedHttpClientLogger" Version="0.1.0" />
<PackageVersion Include="SanitizedHttpClientLogger" Version="0.1.0" />
<PackageReference Include="SanitizedHttpClientLogger" />
paket add SanitizedHttpClientLogger --version 0.1.0
#r "nuget: SanitizedHttpClientLogger, 0.1.0"
#:package SanitizedHttpClientLogger@0.1.0
#addin nuget:?package=SanitizedHttpClientLogger&version=0.1.0
#tool nuget:?package=SanitizedHttpClientLogger&version=0.1.0
How does it work
It's not possible to configure the log pattern of the Microsoft.Extensions.Http based HttpClient loggers. It has to be replaced.
This package replaces the default loggers with a logger that:
- Reduces the number of log statements on
HttpClientrequests from 4 to 2 - Makes sure that sensitive information like api-keys or tokens in the request-Uri can be sanitized using configurable Regex patterns
- Also removes and replaces sensitive information like api-keys or tokens in the request- and response-headers using configurable Regex patterns
(Only when the log level is set to
Trace)
Change in logging output
Before:
info: Start processing HTTP request GET https://my.api.com/v1/status?apikey=my-secret-key
info: Sending HTTP request GET https://my.api.com/v1/status?apikey=my-secret-key
info: Received HTTP response headers after 188.6041ms - 200
info: End processing HTTP request after 188.8026ms - 200
After:
info: Sending HTTP request GET https://my.api.com/v1/status?apikey=xxx
info: Received HTTP response GET https://my.api.com/v1/status?apikey=xxx - 200 in 186.4883ms
Install
$ dotnet add package SanitizedHttpClientLogger
Usage
Via Options
services
.AddHttpClient<Worker>((_, o) =>
{
o.BaseAddress = new Uri("https://my.api.com/v1");
})
.ConfigureSanitizedLogging(o =>
// This regex pattern will match any part of a string that starts with "apikey=" (in a case-insensitive manner)
// followed by any number of characters that are not an ampersand.
o.UriReplacements.Add("(?i)apikey=[^&]*", "apikey=xxx")
);
Via Configuration
{
"SanitizedHttpLoggerOptions": {
"UriReplacements": {
"(?i)apikey=[^&]*": "apikey=xxx"
},
"HeadersReplacements": {
"(?i)^X-Api-Key$": "xxx",
"(?i)^X-Api-Key2$": "yyy",
"(?i)^Authorization$": "zzz"
}
}
}
services
.AddHttpClient<Worker>((_, o) =>
{
o.BaseAddress = new Uri("https://my.api.com/v1");
})
.ConfigureSanitizedLogging(configuration);
Sponsors
Entity Framework Extensions and Dapper Plus are major sponsors and proud to contribute to the development of SanitizedHttpClientLogger.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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 was computed. 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
- Microsoft.Extensions.Http (>= 10.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.0)
- Stef.Validation.Options (>= 0.2.0)
-
net8.0
- Microsoft.Extensions.Http (>= 8.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 8.0.0)
- Stef.Validation.Options (>= 0.2.0)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on SanitizedHttpClientLogger:
| Package | Downloads |
|---|---|
|
RestEase.Authentication.Azure
Add AzureAd Authentication for RestEase: the easy-to-use typesafe REST API client library. |
|
|
Freecurrency-API
This unofficial (RestEase based) client enables working with freecurrencyapi (https://freecurrencyapi.com) |
|
|
Google-GenAI.SDK
This unofficial (RestEase based) client enables working with the Google Gemini REST Interface (https://ai.google.dev/gemini-api/docs) |
GitHub repositories
This package is not used by any popular GitHub repositories.
# 0.1.0 (19 January 2026)
- #4 Also sanitize request- and response headers
The full release notes can be found here: https://github.com/StefH/SanitizedHttpLogger/blob/main/ReleaseNotes.md

