SanitizedHttpClientLogger 0.0.3

dotnet add package SanitizedHttpClientLogger --version 0.0.3
NuGet\Install-Package SanitizedHttpClientLogger -Version 0.0.3
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SanitizedHttpClientLogger" Version="0.0.3" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add SanitizedHttpClientLogger --version 0.0.3
#r "nuget: SanitizedHttpClientLogger, 0.0.3"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install SanitizedHttpClientLogger as a Cake Addin
#addin nuget:?package=SanitizedHttpClientLogger&version=0.0.3

// Install SanitizedHttpClientLogger as a Cake Tool
#tool nuget:?package=SanitizedHttpClientLogger&version=0.0.3

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:

  1. Reduces the number of log statements on HttpClient requests from 4 to 2
  2. Makes sure that sensitive information like api-keys or tokens in the request-Uri can be sanitized using configurable Regex patterns

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.RequestUriReplacements.Add("(?i)apikey=[^&]*", "apikey=xxx")
    );
Via Configuration
{
  "SanitizedHttpLoggerOptions": {
    "RequestUriReplacements": {
      "(?i)apikey=[^&]*": "apikey=xxx"
    }
  }
}
services
    .AddHttpClient<Worker>((_, o) =>
    {
        o.BaseAddress = new Uri("https://my.api.com/v1");
    })
    .ConfigureSanitizedLogging(configuration);
Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on SanitizedHttpClientLogger:

Package Downloads
Freecurrency-API

This unofficial (RestEase based) client enables working with freecurrencyapi (https://freecurrencyapi.com)

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.0.3 111 3/20/2024

# 0.0.2 (20 March 2024)
- #2 Add SanitizedHttpClientLogger [enhancement]

The full release notes can be found here: https://github.com/StefH/SanitizedHttpLogger/blob/main/ReleaseNotes.md