TrackMethods 1.3.0

dotnet add package TrackMethods --version 1.3.0
                    
NuGet\Install-Package TrackMethods -Version 1.3.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="TrackMethods" Version="1.3.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="TrackMethods" Version="1.3.0" />
                    
Directory.Packages.props
<PackageReference Include="TrackMethods" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add TrackMethods --version 1.3.0
                    
#r "nuget: TrackMethods, 1.3.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package TrackMethods@1.3.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=TrackMethods&version=1.3.0
                    
Install as a Cake Addin
#tool nuget:?package=TrackMethods&version=1.3.0
                    
Install as a Cake Tool

📊 TrackMethods

TrackMethods é uma biblioteca C# desenvolvida para monitorar a execução de métodos, registrando métricas como tempo de resposta, nome do método, descrição e usuário. Os resultados podem ser salvos em arquivos Excel (.xlsx) ou retornados como JSON para análise ou visualização.


🚀 Funcionalidades

  • Medir o tempo de execução de métodos.
  • Salvar os dados da execução em arquivo Excel.
  • Gerar um objeto JSON com os dados da execução.
  • Configuração fluente e personalizável.
  • Destaque visual no Excel para tempos que excedem o esperado.

📦 Instalação

Você deve referenciar o projeto ou a biblioteca TrackMethods em sua aplicação C#. As dependências necessárias incluem:

  • ClosedXML
  • Newtonsoft.Json
  • Suporte a System.Web.Mvc para JsonResult

🧠 Quando usar?

  • Para logar execuções de funções críticas em produção ou desenvolvimento.
  • Para auditoria e rastreio de chamadas por usuário ou funcionalidade.
  • Para benchmarking de performance esperada versus real.

⚙️ Estrutura do Projeto

Componente Função
Tracker<T> Builder fluente para configurar a rastreabilidade
TrackMethod Serviço que executa, mede e salva os logs
Execution Fábrica que cria instâncias de Tracker<T>
ITrackMethod Interface para implementação customizada
SaveExcel() Salva os dados em um .xlsx
GenerateJson() Retorna um objeto JSON com os dados

✅ Exemplo de Uso

1. Inicialização

var execution = new Execution(new TrackMethod());

2. Método com retorno - Gerar JSON

int MyTestMethod()
{
    Thread.Sleep(1200); // Simula demora
    return 42;
}

var result = execution.Create<int>()
    .WithMethod("MyTestMethod")
    .WithDescription("Teste de JSON")
    .WithUser("João")
    .WithFileName("log-test")
    .WithSaveAs("json")
    .WithMilliseconds(1000)
    .Build(() => MyTestMethod());

string jsonString = execution.Create<int>().LastGeneratedJson;
Console.WriteLine(jsonString);
🔄 Dica: Convertendo jsonString para um objeto JSON
dynamic jsonObj = JsonConvert.DeserializeObject(jsonString);
Console.WriteLine(jsonObj.Data);

3. Método com retorno - Salvar como Excel

string MyMethod()
{
    Thread.Sleep(500);
    return "Tudo certo!";
}

var retorno = execution.Create<string>()
    .WithMethod("MyMethod")
    .WithDescription("Execução de método com retorno")
    .WithUser("Admin")
    .WithFilePath(@"C:\logs\meuarquivo.xlsx")
    .WithFileName("meuarquivo")
    .WithSaveAs("xlsx")
    .WithMilliseconds(400)
    .Build(() => MyMethod());

💾 O arquivo será salvo em C:\logs\meuarquivo.xlsx.


4. Método sem retorno (void) — Como testar

A biblioteca exige que o método tenha retorno. Para métodos void, basta usar um wrapper com Func<bool>:

void MyVoidMethod()
{
    Console.WriteLine("Executando lógica sem retorno");
    Thread.Sleep(800);
}

bool WrapperForVoid()
{
    MyVoidMethod();
    return true; // Valor dummy
}

execution.Create<bool>()
    .WithMethod("MyVoidMethod")
    .WithDescription("Teste de método void")
    .WithUser("Claudio")
    .WithFilePath(@"C:\logs\voidlog.xlsx")
    .WithFileName("voidlog")
    .WithSaveAs("xlsx")
    .WithMilliseconds(600)
    .Build(() => WrapperForVoid());

⚠️ Regras e Validações

  • saveAs deve ser "json" ou "xlsx". Outros valores lançam exceção.
  • Para salvar como JSON, não defina filePath.
  • Para salvar como Excel, filePath deve ser informado.
  • Tempo excedente ao esperado será destacado em vermelho no Excel.

📌 Observações Técnicas

  • A classe TrackMethod implementa toda a lógica com Stopwatch para precisão na medição.
  • O JSON gerado segue o seguinte padrão:
{
  "timestamp": "04-06-2025 14:25:30.123",
  "elapsedTime": "00:00:01.20",
  "methodCalled": "MyTestMethod",
  "description": "Teste",
  "user": "João",
  "fileName": "log-test",
  "milisseconds": 1000
}

🔧 Extensibilidade

Você pode implementar ITrackMethod para usar outros formatos (como banco de dados, CSV, etc.).


🧪 Testes Recomendados

  • Teste métodos rápidos e lentos.
  • Altere o milisseconds para validar o destaque no Excel.
  • Experimente salvar arquivos em diferentes pastas.

📫 Contato

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  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.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
1.3.0 133 6/7/2025
1.1.0 183 6/5/2025
1.0.0 192 6/3/2025

Versão inicial