Ativado ao configurar logging estruturado com Serilog, integração de visualização local com Seq via docker-compose e enriquecimento de contexto de rastreamento no .NET 8.
60
69%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./plugins/dotnet-clean-arch/skills/serilog-seq-logging-manager/SKILL.mdEsta habilidade orienta a implementação de logging estruturado (semântico) usando Serilog no .NET 8 e a integração local com o visualizador Seq para depuração rápida e análise de fluxo.
Evite hardcoding de configurações. Utilize o arquivo appsettings.json para definir níveis de log e destinos (sinks).
Bootstrap e Registro:
Serilog.AspNetCoreSerilog.Sinks.ConsoleSerilog.Sinks.SeqSerilog.Enrichers.Span (ou use suporte nativo do .NET 8 para TraceIds).Program.cs para capturar falhas de inicialização da API (bootstrap logging).builder.Host.UseSerilog((context, configuration) => configuration.ReadFrom.Configuration(context.Configuration));Configuração via JSON (appsettings.Development.json):
Configure o arquivo para habilitar os sinks de Console e Seq localmente:
"Serilog": {
"Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.Seq" ],
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
}
},
"WriteTo": [
{ "Name": "Console" },
{
"Name": "Seq",
"Args": { "serverUrl": "http://localhost:5341" }
}
],
"Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ]
}Para garantir que as ferramentas de análise consigam indexar e pesquisar propriedades do domínio:
Nunca use Interpolação de Strings para dados variáveis:
_logger.LogInformation($"Máquina {maquina.Codigo} recebida para triagem na fábrica {fabrica.Nome}"); (Gera uma string de texto livre sem propriedades indexáveis)._logger.LogInformation("Máquina {CodigoMaquina} recebida para triagem na fábrica {NomeFabrica}", maquina.Codigo, fabrica.Nome); (Cria duas propriedades indexáveis CodigoMaquina e NomeFabrica no payload JSON enviado ao Seq).Convenção de Nomenclatura das Propriedades:
CodigoMaquina em vez de apenas Id ou Codigo para evitar colisões ao correlacionar logs de diferentes entidades).Enriquecimento com Tracing e Contexto:
app.UseSerilogRequestLogging()) esteja ativado na camada de API. Ele limpa os logs verbosos do ASP.NET padrão e gera uma única entrada rica para cada requisição HTTP.TraceId e SpanId gerados pelo .NET são repassados automaticamente nos metadados do log. No Seq, você pode clicar no ícone de Trace para visualizar a sequência de logs associada a uma única requisição.Para habilitar a visualização e busca local dos logs, inclua o serviço do Seq no arquivo docker-compose.yml da raiz do projeto:
version: '3.8'
services:
# ... outros serviços (postgres, redis) ...
seq:
image: datalust/seq:latest
container_name: machinereturn-seq
environment:
- ACCEPT_EULA=Y
ports:
- "5341:5341" # Porta de Ingestão de Logs (API do Serilog)
- "8081:80" # Porta do Dashboard Web (Visualização)
volumes:
- seq_data:/data
restart: unless-stopped
volumes:
seq_data:Ao rodar os containers, os logs estruturados da API serão ingeridos na porta 5341 e poderão ser consultados de forma avançada acessando http://localhost:8081 no navegador.
1cbe5bc
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.