diff --git a/README.md b/README.md index b5e39bc..be4feae 100644 --- a/README.md +++ b/README.md @@ -49,10 +49,13 @@ avisa quando há versão nova publicada aqui, com um link para o release. - **Stack Trace Highlighter:** Exceções são formatadas e coloridas para facilitar a leitura. - **Propriedades Estruturadas:** Visualize todas as propriedades do evento de log em uma tabela organizada. - **Correlation ID:** Clique em IDs de correlação para filtrar todos os logs relacionados a uma mesma requisição. +- **Navegação por Correlação:** A partir de um evento, monte a sequência dos eventos que compartilham TraceId, SpanId, RequestId ou CorrelationId — sem mexer nos filtros da consulta atual. +- **Linha do Tempo de Spans:** Durações, intervalos entre eventos e hierarquia pai/filho a partir dos campos de tracing do CLEF (`@tr`, `@sp`, `@ps`, `@st`) e de atributos OpenTelemetry/Seq. ### ⚙️ Configurações - **Ignorar Arquivos:** Defina padrões (wildcards) para ignorar arquivos indesejados (ex: *backup*). - **Ignorar Linhas:** Configure textos para ocultar linhas de log que são ruído (ex: health checks). +- **Aliases de Correlação e Observabilidade:** Informe os nomes que sua aplicação usa para correlação, nome da operação, serviço, tipo do span e duração — os campos padrão continuam reconhecidos sem configuração. ## 📋 Pré-requisitos diff --git a/src/Components/LogCorrelationNavigator.razor b/src/Components/LogCorrelationNavigator.razor new file mode 100644 index 0000000..00ab468 --- /dev/null +++ b/src/Components/LogCorrelationNavigator.razor @@ -0,0 +1,202 @@ +@using ClefExplorer.Models +@using ClefExplorer.Helpers + +
A sequência usa correspondência direta com o evento de origem: mesmo campo e valor.
++ As linhas azuis na lista/tabela fazem parte desta sequência. Uma linha sem destaque entre elas pode indicar trabalho concorrente. +
+@StackTraceHighlighter.Highlight(s)} - else if (p.Key.Equals("X-Correlation-Id", StringComparison.OrdinalIgnoreCase) && p.Value is ScalarValue svCorr && svCorr.Value is string sCorr) + else if (Navegacao.EhCampoCorrelacao(p.Key) && p.Value is ScalarValue svCorr && svCorr.Value is string sCorr) { var ids = sCorr.Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
@currentAlias
+
+
+ }
+ + TraceId, SpanId e RequestId são reconhecidos sempre. Os campos abaixo são + tratados como o mesmo CorrelationId, mesmo quando aplicações diferentes usam + nomes distintos. +
++ Os campos padrão Seq/CLEF e os campos OTLP presentes nos eventos são + reconhecidos automaticamente. Configure aliases somente quando sua aplicação + usar outros nomes de propriedades. +
+Ex: HealthCheck
@@ -118,6 +172,10 @@ SettingsService.Save(); } + private void SaveObservability() => SettingsService.Save(); + + private void SaveCorrelation() => SettingsService.Save(); + private void SetAsDefaultApp() { FileAssociationService.SetAsDefault(); diff --git a/src/Helpers/FormatacaoTempo.cs b/src/Helpers/FormatacaoTempo.cs new file mode 100644 index 0000000..7d6b080 --- /dev/null +++ b/src/Helpers/FormatacaoTempo.cs @@ -0,0 +1,33 @@ +namespace ClefExplorer.Helpers +{ + ///