Fineboym.Logging.Generator
1.2.0
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
<PackageReference Include="Fineboym.Logging.Generator" Version="1.2.0" />
paket add Fineboym.Logging.Generator --version 1.2.0
#r "nuget: Fineboym.Logging.Generator, 1.2.0"
// 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
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.
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.0.0 | 580 | 3/17/2023 | |
0.1.0-beta | 1,045 | 12/25/2022 |