Guia Completo de Freelancing em .NET: Dicas e Estratégias
Serilog em .NET: Rastreamento Estruturado e Logs Detetivesco
Imagine que você é um detetive, mas ao invés de investigar pistas em um crime, você investiga comportamentos estranhos no seu código. É exatamente para🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! isso que serve o logging
🚀 Kubernetes: Orquestração de Microservices na Nuvem!Descubra como Kubernetes revoluciona o gerenciamento de microsserviços na nuvem, garantindo escalabilidade, automação e alta disponibilidade.: coletar evidências que ajudem a entender o que está acontecendo em cada parte da aplicação. E quando
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. o assunto é registrar logs em .NET, o Serilog é uma das ferramentas mais populares e poderosas. Ele oferece flexibilidade para escrever logs em diferentes formatos e lugares (chamados de Sinks), além de permitir que você personalize desde os detalhes mais simples até estruturas de logs
Técnicas de Logging e Monitoramento de Consultas em Tempo RealNeste tutorial, aprenda a registrar e monitorar consultas LINQ em C# para identificar gargalos, otimizar desempenho e manter a estabilidade do sistema. complexas. Se você quer rastrear cada evento que ocorre no seu sistema e se tornar um verdadeiro detetive de bugs, este artigo é pra você!
📌 Tabela de Conteúdo🔗
- 🔍 Por que Serilog?
- 🛠️ Configuração
Gerenciando Secrets e Configs em Docker SwarmAprenda a proteger credenciais, chaves e tokens com Docker Swarm. Gerencie Secrets e Configs de forma segura, garantindo integridade dos dados críticos. Básica em 5 Minutos
- 📝 Logging
🚀 Kubernetes: Orquestração de Microservices na Nuvem!Descubra como Kubernetes revoluciona o gerenciamento de microsserviços na nuvem, garantindo escalabilidade, automação e alta disponibilidade. Estruturado: Seus Logs Não Serão Mais Mistérios Indecifráveis
- ⚙️ Configuração
Gerenciando Secrets e Configs em Docker SwarmAprenda a proteger credenciais, chaves e tokens com Docker Swarm. Gerencie Secrets e Configs de forma segura, garantindo integridade dos dados críticos. Avançada: appsettings.json vs Código
- 🎩 Enriquecimento de Logs
Técnicas de Logging e Monitoramento de Consultas em Tempo RealNeste tutorial, aprenda a registrar e monitorar consultas LINQ em C# para identificar gargalos, otimizar desempenho e manter a estabilidade do sistema.: Adicione DNA aos Seus Registros
- 📤 Sinks: Envie Seus Logs para Qualquer Lugar (Até para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! a Nuvem!)
- 🕵️ Padrões de Detetive: Melhores Práticas
🧠 Memory Management Avançado: Domine Span<T> e MemoryMarshal!Transforme seu código C# usando Span<T> e MemoryMarshal para manipulação eficiente de memória, reduzindo alocações desnecessárias e elevando a performance. para Logging Eficiente
- 🔬 Caso Real: Implementando em um Microserviço
🔍 Por que Serilog?🔗
Enquanto🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! o logging tradicional é como escrever diários em papel, o Serilog é um banco de dados estruturado disfarçado de sistema de logs
Técnicas de Logging e Monitoramento de Consultas em Tempo RealNeste tutorial, aprenda a registrar e monitorar consultas LINQ em C# para identificar gargalos, otimizar desempenho e manter a estabilidade do sistema.. Principais vantagens:
- Logs
Técnicas de Logging e Monitoramento de Consultas em Tempo RealNeste tutorial, aprenda a registrar e monitorar consultas LINQ em C# para identificar gargalos, otimizar desempenho e manter a estabilidade do sistema. como Dados (não apenas texto
📝 Strings em C#: Manipule Textos como um Mestre dos Caracteres!Aprenda a dominar os segredos das strings em C# com técnicas de manipulação, concatenação, interpolação e boas práticas, impulsionando sua performance.)
- Destinos Múltiplos (arquivo, console, Elasticsearch, Slack)
- Enriquecimento Contextual (adiciona informações automaticamente)
- Performance
🔄 StringBuilder: Quando Concatenar Strings Vira um Pesadelo!Descubra como o StringBuilder otimiza a concatenação em C#, evitando desperdício de memória e melhorando a performance das aplicações. Veja exemplos práticos! Otimizada (quase zero impacto no sistema)
// Log tradicional (fracasso investigativo)
Console.WriteLine($"Erro ao processar pedido {pedidoId}");
// Log com Serilog (sucesso detetivesco)
Log.Error("Erro ao processar pedido {PedidoId} | Usuário: {Usuario}", pedidoId, usuario);
🛠️ Configuração Básica em 5 Minutos🔗
Para começar, você precisa adicionar📦 List<T>: Dinamismo além dos Arrays!Descubra como utilizar List<T> em C# de forma eficiente. Aprenda a criar, manipular e otimizar listas para diferentes cenários com exemplos práticos. o pacote Serilog ao seu projeto. Supondo que você esteja usando o Visual Studio
🛠️ Instalação do Visual Studio: Prepare sua Nave para Decolar!Prepare seu ambiente de desenvolvimento com o Visual Studio em uma aventura C#. Este tutorial prático ensina a instalar, configurar e personalizar sua IDE. ou algum outro IDE, basta abrir o terminal do NuGet
📦 Crie um Pacote NuGet: Compartilhe seu Código!Aprenda a empacotar, configurar e publicar pacotes NuGet em C# passo a passo, com dicas profissionais e práticas recomendadas para seu projeto. e executar
🔍 Comandos: Desacople Ações dos Botões!Aprenda a implementar comandos em C# para desacoplar lógica e interface usando MVVM, com exemplos práticos e dicas para melhor testabilidade e manutenção.:
Install-Package Serilog
Install-Package Serilog.Sinks.Console
O primeiro comando🔍 Comandos: Desacople Ações dos Botões!Aprenda a implementar comandos em C# para desacoplar lógica e interface usando MVVM, com exemplos práticos e dicas para melhor testabilidade e manutenção. instala o core
🌍 Projeto: API de E-Commerce com ASP.NET Core e SQL Server!Aprenda a construir uma API robusta para e-commerce com ASP.NET Core, EF Core, JWT e Swagger, validando suas habilidades em um projeto prático real. do Serilog, enquanto
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! o segundo adiciona um Sink para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! escrever logs no Console. Existem vários outros Sinks (para arquivos, bancos de dados, etc.), mas vamos ficar com o Console por enquanto
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais!.
Depois de instalar o Serilog, é hora de inicializar o logger. Geralmente, você faz isso no ponto de entrada do seu aplicativo (por exemplo, no Program.cs
). Um setup mínimo🎲 Desafio: Analise Dados de Vendas com LINQ e Coleções!Aprenda a usar coleções e LINQ em C# para analisar vendas, filtrar dados e extrair insights estratégicos que otimizem decisões e impulsionem seu negócio. poderia ser:
using Serilog;
public class Program
{
public static void Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.WriteTo.Console() // Envia logs para o console
.CreateLogger();
Log.Information("Aplicação iniciada!");
// ...
}
}
Aqui, estamos criando uma configuraçãoGerenciando Secrets e Configs em Docker SwarmAprenda a proteger credenciais, chaves e tokens com Docker Swarm. Gerencie Secrets e Configs de forma segura, garantindo integridade dos dados críticos. de logger que escreve logs no console. Depois, chamamos
Log
para enviarTécnicas de Logging e Monitoramento de Consultas em Tempo RealNeste tutorial, aprenda a registrar e monitorar consultas LINQ em C# para identificar gargalos, otimizar desempenho e manter a estabilidade do sistema..Information(...)
📡 RESTful 101: Princípios que Todo Dev API Precisa Saber!Descubra os fundamentos do REST e boas práticas para criar APIs simples, escaláveis e eficientes. Domine métodos HTTP e status codes com exemplos práticos. a primeira mensagem. Pronto, você já tem algo registrado!
📝 Logging Estruturado: Seus Logs Não Serão Mais Mistérios Indecifráveis🔗
O Serilog trabalha com o conceito de mensagens formatadas e📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. campos estruturados. Quando
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. você faz:
Log.Information("O usuário {Nome} se conectou ao sistema", nomeDoUsuario);
Além de exibir a mensagem, o Serilog armazena a informação de que Nome = nomeDoUsuario, facilitando pesquisas em sistemas de analytics, por exemplo. Esse estilo de structured logging🚀 Kubernetes: Orquestração de Microservices na Nuvem!Descubra como Kubernetes revoluciona o gerenciamento de microsserviços na nuvem, garantindo escalabilidade, automação e alta disponibilidade. é muito útil para filtrar e agrupar
🎲 Desafio: Analise Dados de Vendas com LINQ e Coleções!Aprenda a usar coleções e LINQ em C# para analisar vendas, filtrar dados e extrair insights estratégicos que otimizem decisões e impulsionem seu negócio. eventos posteriormente.
No arquivo de logTécnicas de Logging e Monitoramento de Consultas em Tempo RealNeste tutorial, aprenda a registrar e monitorar consultas LINQ em C# para identificar gargalos, otimizar desempenho e manter a estabilidade do sistema. (JSON formatado):
{
"Timestamp": "2024-02-15T10:00:00Z",
"Level": "Information",
"Message": "Sherlock realizou compra de 99.99 no pedido 1234",
"Properties": {
"Usuario": "Sherlock",
"Valor": 99.99,
"PedidoId": 1234
}
}
⚙️ Configuração Avançada: appsettings.json vs Código🔗
Opção 1: Via Código (rápido)
Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.WriteTo.File("logs/log-.txt", rollingInterval: RollingInterval.Day)
.Enrich.WithMachineName()
.Enrich.WithThreadId()
.CreateLogger();
Opção 2: Via appsettings.json (ideal para🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! ambientes)
{
"Serilog": {
"Using": ["Serilog.Sinks.Console", "Serilog.Sinks.File"],
"MinimumLevel": "Debug",
"WriteTo": [
{ "Name": "Console" },
{
"Name": "File",
"Args": { "path": "logs/log-.txt", "rollingInterval": "Day" }
}
],
"Enrich": ["WithMachineName", "WithThreadId"]
}
}
🎩 Enriquecimento de Logs: Adicione DNA aos Seus Registros🔗
Adicione informações automáticas como:
Log.Logger = new LoggerConfiguration()
.Enrich.WithProperty("Aplicacao", "SistemaAntiFraude")
.Enrich.WithEnvironmentUserName()
.Enrich.WithAssemblyName()
.Enrich.WithCorrelationId()
.WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {Message} {Properties}{NewLine}{Exception}")
.CreateLogger();
Resultado:
[14:30:45 INF] Usuário autenticado { Aplicacao: "SistemaAntiFraude", EnvironmentUserName: "Watson", AssemblyName: "DetetiveApp", CorrelationId: "abcd1234" }
📤 Sinks: Despejando Logs em Vários Lugares🔗
Um dos pontos fortes do Serilog é a variedade de lugares (ou Sinks) para🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! onde você pode mandar seus logs:
- Console: já falamos, muito útil em desenvolvimento.
- Arquivos: para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! gravar em disco e analisar posteriormente.
- Sistemas de Monitoramento
🚀 Kubernetes: Orquestração de Microservices na Nuvem!Descubra como Kubernetes revoluciona o gerenciamento de microsserviços na nuvem, garantindo escalabilidade, automação e alta disponibilidade.: como Seq, Datadog, New Relic etc.
- Bancos de Dados: SQL
📝 SQL Básico: SELECT, INSERT, UPDATE e DELETE para Sobreviver!Aprenda os comandos cruciais de SQL para manipular dados em bancos relacionais com exemplos práticos, dicas e boas práticas para livrarias., NoSQL, e por aí vai.
A instalação segue sempre a mesma ideia: Install-Package Serilog.Sinks.<AlgumaCoisa>
, depois configura no LoggerConfiguration()
:
Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.WriteTo.File("logs.txt", rollingInterval: RollingInterval.Day)
.CreateLogger();
Pronto, agora seus logs vão para🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! o console e
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! um arquivo diário.
🕵️ Padrões de Detetive: Melhores Práticas para Logging Eficiente🔗
1. Mantenha o logTécnicas de Logging e Monitoramento de Consultas em Tempo RealNeste tutorial, aprenda a registrar e monitorar consultas LINQ em C# para identificar gargalos, otimizar desempenho e manter a estabilidade do sistema. estruturado: use parâmetros
🎯 Sobrecarga de Métodos: Um Nome, Múltiplos Superpoderes!Aprenda sobre a técnica de sobrecarga de métodos no C# com exemplos e práticas recomendadas para melhorar a organização e legibilidade do seu código. nomeados (
{Nome}
) em vez de concatenar strings📝 Strings em C#: Manipule Textos como um Mestre dos Caracteres!Aprenda a dominar os segredos das strings em C# com técnicas de manipulação, concatenação, interpolação e boas práticas, impulsionando sua performance..
2. Não exagere em logsTécnicas de Logging e Monitoramento de Consultas em Tempo RealNeste tutorial, aprenda a registrar e monitorar consultas LINQ em C# para identificar gargalos, otimizar desempenho e manter a estabilidade do sistema. de nível muito detalhado: níveis
Verbose
e📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades.
Debug
podem encher o disco se forem usados sem critérios.
3. Evite informações sensíveis🗝️ Azure Key Vault: Gerencie Segredos como um Especialista!Aprenda a proteger e gerenciar segredos, chaves e certificados com o Azure Key Vault em aplicações .NET, seguindo as melhores práticas de segurança na nuvem.: não registre senhas, tokens ou dados críticos.
4. Filtre o que vai para🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! cada Sink: se você quer logs mais completos em arquivo, mas resumidos no console, basta configurar níveis mínimos diferentes para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! cada destino.
5. Use correlação de logsTécnicas de Logging e Monitoramento de Consultas em Tempo RealNeste tutorial, aprenda a registrar e monitorar consultas LINQ em C# para identificar gargalos, otimizar desempenho e manter a estabilidade do sistema.: em sistemas distribuídos, inclua IDs de transação para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! rastrear por onde a requisição passou.
🔬 Caso Real: Implementando em um Microserviço🔗
Cenário: API de pagamentos com ASP.NET Core🌍 Projeto: API de E-Commerce com ASP.NET Core e SQL Server!Aprenda a construir uma API robusta para e-commerce com ASP.NET Core, EF Core, JWT e Swagger, validando suas habilidades em um projeto prático real.
public class PagamentoController : ControllerBase
{
private readonly ILogger<PagamentoController> _logger;
public PagamentoController(ILogger<PagamentoController> logger)
{
_logger = logger;
}
[HttpPost]
public IActionResult Processar([FromBody] PagamentoRequest request)
{
using (_logger.BeginScope("Transação {TransacaoId}", request.Id))
{
_logger.LogInformation("Iniciando processamento para {Usuario}", request.UsuarioId);
try {
// Lógica de pagamento
_logger.LogDebug("Validando cartão {Ultimos4Digitos}", request.CartaoCredito[^4..]);
if (saldoInsuficiente)
_logger.LogWarning("Saldo insuficiente: {Usuario} | Valor: {Valor}", request.UsuarioId, request.Valor);
return Ok();
}
catch (Exception ex) {
_logger.LogError(ex, "Falha catastrófica no processamento");
return StatusCode(500);
}
}
}
}
Desafio Prático:
- Duração da requisição
- Status code
- User agent
- IP do cliente
Use enriquecimento para adicionar automaticamente Correlation IDGerenciando Exceções Distribuídas: Usando Logging e ObservabilityAprenda a gerenciar exceções em ambientes distribuídos utilizando logging estruturado, correlação de IDs e tracing para diagnósticos mais rápidos.!
Serilog.Enrichers.AspNetCore
Com isso, você está preparado para🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! usar o Serilog e transformar-se em um legítimo detetive de bugs, registrando cada passo do seu sistema. A investigação nunca mais será a mesma!
Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.
Referências🔗
- .NET Documentation: learn.microsoft.com/pt-br/dotnet/
- ASP.NET Core Samples: github.com/dotnet/AspNetCore.Docs
- Awesome .NET: github.com/quozd/awesome-dotnet
- GitHub: Microsoft/.NET: github.com/dotnet
- Microsoft Learn: C# e .NET: learn.microsoft.com/pt-br/dotnet/csharp/