StackSpot.Logging.Correlation
1.0.1
dotnet add package StackSpot.Logging.Correlation --version 1.0.1
NuGet\Install-Package StackSpot.Logging.Correlation -Version 1.0.1
<PackageReference Include="StackSpot.Logging.Correlation" Version="1.0.1" />
paket add StackSpot.Logging.Correlation --version 1.0.1
#r "nuget: StackSpot.Logging.Correlation, 1.0.1"
// Install StackSpot.Logging.Correlation as a Cake Addin #addin nuget:?package=StackSpot.Logging.Correlation&version=1.0.1 // Install StackSpot.Logging.Correlation as a Cake Tool #tool nuget:?package=StackSpot.Logging.Correlation&version=1.0.1
StackSpot logging Extension CorrelationId
Componente projetado para complementar o log da aplicação com CorrelationId.
Versões suportadas
- net5.0
- net6.0
Uso
1. Adicione o pacote NuGet StackSpot.Logging.Correlation
ao seu projeto.
dotnet add package StackSpot.Logging.Correlation
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()
.WithCorrelation();
Utilizando appsettings.json
services.AddLogger(Configuration)
.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();
}
}
Exemplos
Fornecemos uma aplicação simples de exemplo, verifique a pasta /src/sample deste repositório.
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": {
"correlationId": "614bc03a1eab685315a897fe1405a935"
}
}
Product | Versions 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. |
-
net5.0
- Microsoft.AspNetCore.Http (>= 2.2.2)
- StackSpot.Logging (>= 1.0.1)
- System.Text.Encodings.Web (>= 6.0.0)
-
net6.0
- Microsoft.AspNetCore.Http (>= 2.2.2)
- StackSpot.Logging (>= 1.0.1)
- System.Text.Encodings.Web (>= 6.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.