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.
<PackageVersion Include="Fineboym.Logging.Generator" Version="1.2.0" />
                    
Directory.Packages.props
<PackageReference Include="Fineboym.Logging.Generator" />
                    
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 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.
#addin nuget:?package=Fineboym.Logging.Generator&version=1.2.0
                    
Install Fineboym.Logging.Generator as a Cake Addin
#tool nuget:?package=Fineboym.Logging.Generator&version=1.2.0
                    
Install Fineboym.Logging.Generator as a Cake Tool

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 730 12/22/2023
1.9.0 2,368 9/23/2023
1.8.0 942 7/14/2023
1.7.0 953 6/16/2023
1.6.0 936 5/27/2023
1.5.0 1,014 5/20/2023
1.4.0 919 4/29/2023
1.3.1 889 4/26/2023
1.3.0 856 4/21/2023
1.2.0 1,128 3/31/2023
1.1.0 1,025 3/18/2023 1.1.0 is deprecated because it has critical bugs.
1.0.0 595 3/17/2023 1.0.0 is deprecated because it has critical bugs.
0.1.0-beta 1,063 12/25/2022 0.1.0-beta is deprecated because it is no longer maintained.