Orange.Foundation.Logging
1.0.0
dotnet add package Orange.Foundation.Logging --version 1.0.0
NuGet\Install-Package Orange.Foundation.Logging -Version 1.0.0
<PackageReference Include="Orange.Foundation.Logging" Version="1.0.0" />
paket add Orange.Foundation.Logging --version 1.0.0
#r "nuget: Orange.Foundation.Logging, 1.0.0"
// Install Orange.Foundation.Logging as a Cake Addin #addin nuget:?package=Orange.Foundation.Logging&version=1.0.0 // Install Orange.Foundation.Logging as a Cake Tool #tool nuget:?package=Orange.Foundation.Logging&version=1.0.0
OrangeFoundation logging .NET Core
Este componente foi projetado para padronizar o log das aplicações.
Versões .NET suportadas
Atualmente, este projeto oferece suporte a aplicativos destinados net5.0.
Uso
1. Adicione o pacote NuGet Orange.Foundation.Logging
ao seu projeto.
dotnet add package Orange.Foundation.Logging
Fornecemos pacotes adicionais que permitem realizar o logging do SpanId, TraceId e CorrelationId.
dotnet add package Orange.Foundation.Logging.OpenTracing
dotnet add package Orange.Foundation.Logging.Correlation
dotnet add package Orange.Foundation.Logging.XRay
2. Configure as variáveis.
Variável | Descrição | Obrigatória | Padrão |
---|---|---|---|
APP_NAME | nome da aplicação. | sim | |
LOG_LEVEL | level de log, valores: DEBUG, INFO, WARN, ERROR, FATAL | não | INFO |
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": {
"BlaBlaBla": "Teste01",
"Blebleble": "Teste02"
},
"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 | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 is compatible. net5.0-windows was computed. net6.0 was computed. 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.Extensions.DependencyInjection.Abstractions (>= 5.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 5.0.0)
- Microsoft.Extensions.Options (>= 5.0.0)
- Newtonsoft.Json (>= 13.0.1)
- Scrutor (>= 3.3.0)
- Serilog (>= 2.10.0)
- Serilog.Extensions.Logging (>= 3.0.1)
- Serilog.Formatting.Compact (>= 1.1.0)
- Serilog.Settings.Configuration (>= 3.2.0)
- Serilog.Sinks.Console (>= 4.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.
Version | Downloads | Last updated |
---|