Vestfold.Extensions.Logging 3.0.0

Prefix Reserved
dotnet add package Vestfold.Extensions.Logging --version 3.0.0
                    
NuGet\Install-Package Vestfold.Extensions.Logging -Version 3.0.0
                    
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="Vestfold.Extensions.Logging" Version="3.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Vestfold.Extensions.Logging" Version="3.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Vestfold.Extensions.Logging" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Vestfold.Extensions.Logging --version 3.0.0
                    
#r "nuget: Vestfold.Extensions.Logging, 3.0.0"
                    
#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.
#:package Vestfold.Extensions.Logging@3.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Vestfold.Extensions.Logging&version=3.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Vestfold.Extensions.Logging&version=3.0.0
                    
Install as a Cake Tool

NuGet Version NuGet Downloads

Vestfold.Extensions.Logging

Contains builder extensions for configuring logging in a dotnet core application.

Adding environment variables in an Azure App Service (Web App or Function App)

Azure App Services (actually it's Linux) does not allow periods (.) in the app setting names.<br /> If an app setting contains a period (.), the period is replaced with an underscore (_) in the container automatically by Azure App Services.<br /> As a workaround, use an underscore (_) instead of a period (.) in the app setting names, and it will be handled correctly in the code.

Azure App Services (actually it's Linux) does not allow colons (:) in the app setting names, which are typically used in configuration names to denote nested configuration sections (e.g., Serilog:MinimumLevel:Override:Microsoft).<br /> As a workaround, use double underscores (__) instead of a colon (:) in the app, and the dotnet runtime will automatically translate the double underscores into colons when building the configuration, allowing you to maintain the hierarchical structure of your configuration settings without any issues.<br /> Example: Serilog__MinimumLevel__Override__Microsoft will be translated to Serilog:MinimumLevel:Override:Microsoft in the configuration.

Usage in an Azure Function App

Add the following to your local.settings.json file to have a nested structure for the configuration:

All properties (except AzureWebJobsStorage (Azure App Service specific) and FUNCTIONS_WORKER_RUNTIME (Azure Function App specific) are optional.

Semi optional properties:

  • AppName: If not set, the assembly name will be used as AppName property in logs<br />
  • AppVersion: If not set, the assembly version will be used as Version property in logs.<br />

In Azure Functions, the Azure App Services automatically injects an environment variable named Version with the version of the Azure Functions runtime, which will override the assembly version IF AppVersion is not set. To avoid this, it's recommended to explicitly set the AppVersion property in Azure Functions to ensure the correct version is used in the logs.

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
    "AppName": "Name of your application, used as a property in the logs",
    "AppVersion": "1.0.0",
    "BetterStack__SourceToken": "Your BetterStack source token",
    "BetterStack__Endpoint": "https://foo.betterstackdata.com",
    "BetterStack__MinimumLevel": "Information",
    "MicrosoftTeams__WebhookUrl": "microsoft teams webhook url | microsoft power automate flow url if UseWorkflows is set to true",
    "MicrosoftTeams__UseWorkflows": "true if Microsoft Power Automate flow is used, false if Microsoft Teams webhook is used (default is true)",
    "MicrosoftTeams__TitleTemplate": "The title template of the card",
    "MicrosoftTeams__MinimumLevel": "Warning",
    "Serilog__Console__MinimumLevel": "Information",
    "Serilog__File__Path": "log.txt",
    "Serilog__File__MinimumLevel": "Warning",
    "Serilog__File__RollingInterval": "Day"
  }
}

Override minimum levels for certain namespaces

If you want to override a namespace which contains a period (.), for instance Microsoft.Hosting,<br /> you need to use an underscore (_) since Azure App Services (actually it's Linux) does not allow periods (.) in the app setting names.

Example: Add an override for everything in the Microsoft.Hosting namespace to log from Warning and higher

{
  "Values": {
    "Serilog__MinimumLevel__Override__Microsoft_Hosting": "Warning"
  }
}

Usage outside Azure

Add the following to your appsettings.json file:

All properties are optional.

Semi optional properties:

  • AppName: If not set, the assembly name will be used as AppName property in logs<br />
  • AppVersion: If not set, the assembly version will be used as Version property in logs
{
  "AppName": "Name of your application, used as a property in the logs",
  "AppVersion": "1.0.0",
  "BetterStack": {
    "SourceToken": "Your BetterStack source token",
    "Endpoint": "https://foo.betterstackdata.com",
    "MinimumLevel": "Information"
  },
  "MicrosoftTeams": {
    "WebhookUrl": "microsoft teams webhook url | microsoft power automate flow url if UseWorkflows is set to true",
    "UseWorkflows": "true if Microsoft Power Automate flow is used, false if Microsoft Teams webhook is used (default is true)",
    "TitleTemplate": "The title template of the card",
    "MinimumLevel": "Warning"
  },
  "Serilog": {
    "Console": {
      "MinimumLevel": "Information"
    },
    "File": {
      "Path": "log.txt",
      "MinimumLevel": "Warning",
      "RollingInterval": "Day"
    }
  }
}

Override minimum levels for certain namespaces

Example: Add an override for everything in the Microsoft.Hosting namespace to log from Warning and higher

{
  "Serilog": {
    "MinimumLevel": {
      "Override": {
        "Microsoft.Hosting": "Warning"
      }
    }
  }
}

Setting up logging for an Azure Function App / Azure Web App

var builder = FunctionsApplication.CreateBuilder(args);
builder.ConfigureFunctionsWebApplication();
builder.Logging.AddVestfoldLogging();
builder.Build().Run();

Setting up logging for a HostBuilder (Console app, ClassLibrary, etc.)

public static async Task Main(string[] args)
{
    await Host.CreateDefaultBuilder(args)
        .ConfigureLogging(builder => builder.AddVestfoldLogging())
        .Build()
        .RunAsync();

    await Serilog.Log.CloseAndFlushAsync();
}

Setting up logging for a WebApplicationBuilder (WebAPI, Blazor, etc.)

var builder = WebApplication.CreateBuilder(args);
builder.Logging.AddVestfoldLogging();

var app = builder.Build();
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.  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 was computed.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
3.0.0 89 3/3/2026
2.0.0 444 12/11/2025
1.1.2 371 11/21/2025
1.1.0 281 9/10/2025
1.0.2 136 8/2/2025
1.0.1 137 5/24/2025
1.0.0 168 5/23/2025