StackSpot.Logging 1.0.1

dotnet add package StackSpot.Logging --version 1.0.1                
NuGet\Install-Package StackSpot.Logging -Version 1.0.1                
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="StackSpot.Logging" Version="1.0.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add StackSpot.Logging --version 1.0.1                
#r "nuget: StackSpot.Logging, 1.0.1"                
#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 StackSpot.Logging as a Cake Addin
#addin nuget:?package=StackSpot.Logging&version=1.0.1

// Install StackSpot.Logging as a Cake Tool
#tool nuget:?package=StackSpot.Logging&version=1.0.1                

StackSpot logging

Este componente foi projetado para padronizar o log das aplicações.

Versões suportadas

  • net5.0
  • net6.0

Uso

1. Adicione o pacote NuGet StackSpot.Logging ao seu projeto.
dotnet add package StackSpot.Logging

Fornecemos pacotes adicionais que permitem realizar o logging do SpanId, TraceId e CorrelationId.

dotnet add package StackSpot.Logging.OpenTracing
dotnet add package StackSpot.Logging.Correlation
dotnet add package StackSpot.Logging.XRay
2. Configure as variáveis.
  • APP_NAME - nome da aplicação - Campo Obrigatório
  • LOG_LEVEL - level de log, valores: DEBUG, INFO, WARN, ERROR, FATAL.

Quando executar na máquina local, você pode configurar as variáveis de ambientes no arquivo launchSettings.json.

{
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "profiles": {
    "Sample.WebApi": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "sample",
      "environmentVariables": {
        "APP_NAME": "MyAppName",
        "LOG_LEVEL": "INFO",
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "http://localhost:5000"
    }
  }
}

Você pode configurar as variáveis no arquivo appsettings.json.

{
  "AppName": "MyAppName",  
  "LogOptions": {
    "LogLevel": "INFO"
  }
}
3. Adicione ao seu IServiceCollection via services.AddLogger() no Startup da aplicação ou Program.

Utilizando váriavel de ambiente

services.AddLogger();

Utilizando appsettings.json

services.AddLogger(Configuration);

Caso precise de um log completo com informações de contexto, instale os pacotes adicionais e utilize a configuração abaixo:

Exemplo OpenTracing:

services.AddLogger()
        .WithOpenTracing()
        .WithCorrelation();

Exemplo XRay:

services.AddLogger()
        .WithXRayTraceId()
        .WithCorrelation();

Implementação

Estendemos os métodos do ILogger<> transformado o output, adicionalmente estamos provendo duas sobrecargas novas para suportar TAGs e log de Objetos no campo Data.

[ApiController]
[Route("[controller]")]
public class SampleController : ControllerBase
{
    private readonly ILogger<SampleController> _logger;

    public SampleController(ILogger<SampleController> logger)
    {
        _logger = logger;
    }

    [HttpGet()]
    public async Task<IActionResult> Get()
    {
        var someEntity = new SampleEntity();
        _logger.LogDebug("My DEBUG Log Message", someEntity, "Tag01", "Tag02");
        return Ok();
    }
}

Sobrecargas disponíveis.

Debug

_logger.LogDebug("My DEBUG Log Message");
_logger.LogDebug("My DEBUG Log Message", "Tag01", "Tag02");
_logger.LogDebug("My DEBUG Log Message", someEntity, "Tag01", "Tag02");

Info

_logger.LogInformation("My INFO Log Message");
_logger.LogInformation("My INFO Log Message", "Tag01", "Tag02");
_logger.LogInformation("My INFO Log Message", someEntity, "Tag01", "Tag02");

Warning

_logger.LogWarning("My WARNING Log Message");
_logger.LogWarning("My WARNING Log Message", "Tag01", "Tag02");
_logger.LogWarning("My WARNING Log Message", someEntity, "Tag01", "Tag02");

Error

_logger.LogError("My ERROR Log Message");
_logger.LogError("My ERROR Log Message", "Tag01", "Tag02");
_logger.LogError("My ERROR Log Message", someEntity, "Tag01", "Tag02");

Fatal

_logger.LogFatal("My ERROR Log Message");
_logger.LogFatal("My ERROR Log Message", "Tag01", "Tag02");
_logger.LogFatal("My ERROR Log Message", someEntity, "Tag01", "Tag02");

Output completo

Mostramos abaixo o output completo preenchido com informações do dotnet.

{
    "timeStamp": "2021-04-06T14:50:33.6610795Z",
    "appName": "MyAppName",
    "message": "An unhandled exception has occurred while executing the request.",
    "logger": "Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware",
    "level": "ERROR",
    "tags": ["Tag01", "Tag02"],
    "data": {
        "field1": "Test01",
        "field2": "Test02"
    },
    "exception": {
        "name": "DivideByZeroException",
        "message": "Attempted to divide by zero.",
        "stackTrace": "   at Sample.WebApi.Controllers.SampleController.Get() in ..."
    },
    "context": {
        "spanId": "1af157b8bee48886",
        "traceId": "1af157b8bee48886",
        "correlationId": "614bc03a1eab685315a897fe1405a935"
    }
}
Product Compatible and additional computed target framework versions.
.NET net5.0 is compatible.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  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 (3)

Showing the top 3 NuGet packages that depend on StackSpot.Logging:

Package Downloads
StackSpot.Logging.Correlation

Componente projetado para complementar o log da aplicação com CorrelationId.

StackSpot.Logging.OpenTracing

Componente projetado para complementar o log da aplicação com tracing

StackSpot.Logging.XRay

Componente projetado para complementar o log da aplicação com tracing

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.1 6,440 4/18/2022
1.0.0 1,951 1/28/2022