Serilog.RequestResponse.Extensions
1.1.1
dotnet add package Serilog.RequestResponse.Extensions --version 1.1.1
NuGet\Install-Package Serilog.RequestResponse.Extensions -Version 1.1.1
<PackageReference Include="Serilog.RequestResponse.Extensions" Version="1.1.1" />
paket add Serilog.RequestResponse.Extensions --version 1.1.1
#r "nuget: Serilog.RequestResponse.Extensions, 1.1.1"
// Install Serilog.RequestResponse.Extensions as a Cake Addin #addin nuget:?package=Serilog.RequestResponse.Extensions&version=1.1.1 // Install Serilog.RequestResponse.Extensions as a Cake Tool #tool nuget:?package=Serilog.RequestResponse.Extensions&version=1.1.1
Introdução
Este repositório contém pacotes usados em projetos internos.
Pacotes
Lista de pacotes disponíveis
- Serilog.RequestResponse.Extensions
Como utilizar o pacote Serilog.RequestResponse.Extensions
Passo 1 - Instalando o Pacote
Abra o projeto que for utilizar (ex: Api) e instale o pacote
Install-Package Serilog.RequestResponse.Extensions -Version 1.0.0
Passo 2 - Configurando projeto
- Adicione o código abaixo no appsetting
"Serilog": {
"SqlServer": {
"ConnectionString": "Data Source=localdb;Initial Catalog=Temporaria;User ID=sa;Password=p@ssword",
"Tabela": "LogRequestResponse",
"Schema": "dbo",
"CriaTabelaQuandoNaoTiver": true
},
"Elasticsearch": {
"Url": "http://localhost:9200",
"Index": "log-requisicoes",
"Username": "",
"Password": "",
"DisableProxy": true,
"UseDatetimeInIndexName": true
}
}
** Caso UseDatetimeInIndexName for true ele irá concatenar a data yyy-MM-dd no nome do Index (log-requisicoes-2021-01-10)
** Caso não for inserir no banco ou elastic pode ignorar a configuração do SqlServe e vice-versa.
- Na classe Startup.cs adicione o using do pacote adicionado
using Serilog;
using Serilog.RequestResponse.Extensions;
using Serilog.RequestResponse.Extensions.Models;
using Serilog.RequestResponseExtension.Extensions;
using Serilog.RequestResponseExtension.Models;
- Na classe Startup.cs altere o construtor
public Startup(IConfiguration configuration)
{
Configuration = configuration;
var sqlServerConfig = configuration.GetSection("Serilog:SqlServer").Get<SerilogSqlServerConfig>();
var esConfig = configuration.GetSection("Serilog:Elasticsearch").Get<SerilogElasticsearchConfig>();
Log.Logger = new LoggerConfiguration()
.CreateDefaultInstance("Nome do projeto")
.WithSqlServer(sqlServerConfig)
.WithES(esConfig)
.CreateLogger();
}
** Caso não for inserir no banco ou elastic pode ignorar a configuração do SqlServe e vice-versa.
- Na classe Startup.cs configure o serviço do Serilog
public void ConfigureServices(IServiceCollection services)
{
services.RegisterFilterException();
services.RegisterLogRequestResponseService();
}
- Na classe Startup.cs configure o middleware
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.RegisterLogRequestResponseMiddleware(new SerilogOptions { UseFilterException = false });
}
** UseFilterException = False ⇒ Vai gravar um log quando a requisição chegar e outra quando enviar a resposta ao cliente ou seja registros (request e response). Caso aconteça um erro entre a entrada e a saída o request está sendo logado e o erro também menos a saída devido a exceção
** UseFilterException = True ⇒ Vai gravar apenas um log contendo a entrada, saída e a exceção caso ocorra, para isso registre o serviço do filtro de exceção.
Passo 3 - Verificando
- Rode o projeto
- Consuma um endpoint
- Realize uma pesquisa no Elastic ou SQL Server no endereço que foi configurado no appsettings e verifique o registro que foi gravado
Customizando as Exceções
É possível customizar erros e respostas para o cliente para isso é necessário herdar a classe CustomException de Serilog.RequestResponse.Extensions.Models e implementar seus construtores;
public class DomainException : CustomException
{
public DomainException(int statusCode = StatusCodes.Status400BadRequest) : base(statusCode)
{
Dados = new { Mensagem = "Erro de negócio." };
}
public DomainException(object dados, int statusCode = StatusCodes.Status400BadRequest) : base(dados, statusCode)
{
}
public DomainException(string mensagem, int statusCode = StatusCodes.Status400BadRequest) : base(mensagem, statusCode)
{
}
}
Repositório do projeto
(https://github.com/frederickfrigieri/Serilog.RequestResponse.Extensions)
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. 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. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Microsoft.AspNetCore.Diagnostics.Abstractions (>= 2.2.0)
- Microsoft.AspNetCore.Http (>= 2.2.2)
- Microsoft.AspNetCore.Http.Abstractions (>= 2.2.0)
- Microsoft.AspNetCore.Mvc (>= 2.2.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 2.2.0)
- Microsoft.IO.RecyclableMemoryStream (>= 1.4.0)
- Serilog (>= 2.10.0)
- Serilog.Enrichers.AssemblyName (>= 1.0.9)
- Serilog.Enrichers.Environment (>= 2.1.3)
- Serilog.Exceptions (>= 6.0.0)
- Serilog.Extensions.Logging (>= 3.0.1)
- Serilog.Sinks.Elasticsearch (>= 8.4.1)
- Serilog.Sinks.MSSqlServer (>= 5.6.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Foi adicionada duas novas cargas de CustomException aceitando uma InnerException