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
Conceitos fundamentais de NoSQL: bases para trabalhar com MongoDB em C#Descubra os fundamentos do NoSQL e aprenda como utilizar MongoDB com C# para desenvolver aplicações .NET escaláveis e modernas até 2025. 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
Conceitos fundamentais de NoSQL: bases para trabalhar com MongoDB em C#Descubra os fundamentos do NoSQL e aprenda como utilizar MongoDB com C# para desenvolver aplicações .NET escaláveis e modernas até 2025., etc.), mas vamos ficar com o Console por enquanto.
Depois de instalar
Instalando e configurando o MongoDB no Windows e Linux para uso com C#Aprenda a instalar e configurar o MongoDB no Windows e Linux, integrando-o com projetos C# para ambientes de desenvolvimento eficientes. 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çã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. de logger que escreve logs no console. Depois, chamamos Log para enviar
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..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 log
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. (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
Conceitos fundamentais de NoSQL: bases para trabalhar com MongoDB em C#Descubra os fundamentos do NoSQL e aprenda como utilizar MongoDB com C# para desenvolver aplicações .NET escaláveis e modernas até 2025.: SQL, NoSQL
Conceitos fundamentais de NoSQL: bases para trabalhar com MongoDB em C#Descubra os fundamentos do NoSQL e aprenda como utilizar MongoDB com C# para desenvolver aplicações .NET escaláveis e modernas até 2025., e por aí vai.
A instalação
Instalando e configurando o MongoDB no Windows e Linux para uso com C#Aprenda a instalar e configurar o MongoDB no Windows e Linux, integrando-o com projetos C# para ambientes de desenvolvimento eficientes. 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 log
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. 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 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. 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
Instalando e configurando o MongoDB no Windows e Linux para uso com C#Aprenda a instalar e configurar o MongoDB no Windows e Linux, integrando-o com projetos C# para ambientes de desenvolvimento eficientes. níveis mínimos diferentes para cada destino.
5. Use correlação 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.: 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 ID
Gerenciando 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/

há 10 months atrás
há 10 months atrás
há 11 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás