Fineboym.Logging.Generator 1.2.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package Fineboym.Logging.Generator --version 1.2.0                
NuGet\Install-Package Fineboym.Logging.Generator -Version 1.2.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="Fineboym.Logging.Generator" Version="1.2.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Fineboym.Logging.Generator --version 1.2.0                
#r "nuget: Fineboym.Logging.Generator, 1.2.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.
// Install Fineboym.Logging.Generator as a Cake Addin
#addin nuget:?package=Fineboym.Logging.Generator&version=1.2.0

// Install Fineboym.Logging.Generator as a Cake Tool
#tool nuget:?package=Fineboym.Logging.Generator&version=1.2.0                

image

Logging Decorator Generator

Generates logger decorator class for an interface. Uses Microsoft.Extensions.Logging.ILogger<{Your interface}> to log and requires it in decorator class constructor. Logs method parameters and return value. Supports async methods. Supports log level, event id, and event name override through attribute. Follows high-performance logging guidance by .NET team-> https://learn.microsoft.com/en-us/dotnet/core/extensions/high-performance-logging

Getting started

NuGet: https://www.nuget.org/packages/Fineboym.Logging.Generator/

Use [DecorateWithLogger] attribute in Fineboym.Logging.Attributes namespace on an interface. In Visual Studio you can see the generated code in Solution Explorer if you expand Dependencies->Analyzers->Fineboym.Logging.Generator.

Prerequisites

Latest version of Visual Studio 2022.

Usage

using Fineboym.Logging.Attributes;
using Microsoft.Extensions.Logging;

namespace SomeFolder.SomeSubFolder;

// Default log level is Debug, applied to all methods. Can be changed through attribute's constructor.
[DecorateWithLogger]
public interface ISomeService
{
    int SomeMethod(DateTime someDateTime);

    // Override log level and event id. EventName is also supported.
    [LogMethod(Level = LogLevel.Information, EventId = 100)]
    Task<double?> SomeAsyncMethod(string? s);
}

This will create a generated class named SomeServiceLoggingDecorator in the same namespace as the interface.

Additional documentation

If you use .NET dependency injection, then you can decorate your service interface using, for example, Scrutor-> https://github.com/khellang/Scrutor Go here for explanation-> https://andrewlock.net/adding-decorated-classes-to-the-asp.net-core-di-container-using-scrutor/

Limitations

Currently it supports simple interfaces, only with methods as its members and up to 6 parameters in a method which is what LoggerMessage.Define supports (https://learn.microsoft.com/en-us/dotnet/api/microsoft.extensions.logging.loggermessage.define?view=dotnet-plat-ext-7.0).

Feedback

Please go to https://github.com/DavidFineboym/LoggingDecoratorGenerator for feedback. Feel free to open issues for questions, bugs, and improvements and I'll try to address them as soon as I can. Thank you.

There are no supported framework assets in this package.

Learn more about Target Frameworks and .NET Standard.

  • .NETStandard 2.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.10.0 671 12/22/2023
1.9.0 1,982 9/23/2023
1.8.0 938 7/14/2023
1.7.0 946 6/16/2023
1.6.0 927 5/27/2023
1.5.0 1,006 5/20/2023
1.4.0 911 4/29/2023
1.3.1 880 4/26/2023
1.3.0 847 4/21/2023
1.2.0 1,120 3/31/2023
1.1.0 1,010 3/18/2023 1.1.0 is deprecated because it has critical bugs.
1.0.0 580 3/17/2023 1.0.0 is deprecated because it has critical bugs.
0.1.0-beta 1,045 12/25/2022 0.1.0-beta is deprecated because it is no longer maintained.