Как мне установить Traceid в Core GRPC COLLE ASP.NETC#

Место общения программистов C#
Ответить
Anonymous
 Как мне установить Traceid в Core GRPC COLLE ASP.NET

Сообщение Anonymous »

Я подозреваю, что это невозможно, но у кого -то может быть интересное решение. Это позволит мне непрерывность трассировки на различных границах. Например, куча запросов, которые были сохранены в файле, и теперь нуждаются в обработке. Источник - это приложение C# Console, которое использует ASP.NET Core WebPplicationBuilder в качестве источника клиента. т.е. < /p>

Код: Выделить всё

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddGrpc();
builder.Services.AddGrpcClient(options =>
{options.Address = new (serviceAddress);});

//logging stuff
var serilog = new LoggerConfiguration();
serilog.WriteTo.Console();
serilog.WriteTo.File(new CompactJsonFormatter(), @"D:\Log\Consumer.json", rollingInterval: RollingInterval.Day);
builder.Logging.ClearProviders();
builder.Logging.AddSerilog(serilog.CreateLogger());

var app = builder.Build();

using var scope = app.Services.CreateScope();
var client = scope.ServiceProvider.GetRequiredService();
client.SayHello(new HelloRequest());
< /code>
Вывод журнала JSON затем содержит такие строки, как: < /p>
{"@t":"2025-06-27T10:37:05.7886907Z","@mt":"Start processing HTTP request {HttpMethod} {Uri}","@tr":"9b14662ca75754818cc8cac1a61924b7","@sp":"896f4d5f87913065","HttpMethod":"POST","Uri":"https://localhost:7156/greet.Greeter/SayHello","EventId":{"Id":100,"Name":"RequestPipelineStart"},"SourceContext":"System.Net.Http.HttpClient.GreeterClient.LogicalHandler","SpanId":"896f4d5f87913065","TraceId":"9b14662ca75754818cc8cac1a61924b7","ParentId":"0000000000000000", ....
Использование обертки Core ASP.NET добавляет нагрузку полезного журнала, обогащающего клиенту, включая Traceid , который будет распространяться вдоль цепочки. В моем случае, однако, клиент не является инициатором запроса, только в разделе GRPC. Я уже попробовал это, и я ожидаю, что это вполне может быть лучшим доступным решением. Но было бы гораздо более аккуратно, если бы я мог привязать к существующей инфраструктуре и не пришлось включать нагрузку дополнительных перехватчиков. Помещатели GRPC, конечно, нажимают, но они не имеют доступного доступа к контексту HTTP. Это переопределяет Trace-ID (через TraceParent ) на конце сервера, но не в журнале в конце клиента. Это также, кажется, неправильно переопределяется. Я подозреваю, что где -то в цепочке есть сервис, которая предоставляет данные трассировки клиенту, которые необходимо переопределить или манипулировать, но я не могу их найти. < /P>
контекст < /strong>: < /p>
  • Windows 11, < /li>
    < /li>

    < /li>
    .

    Код: Выделить всё

    Grpc.AspNetCore
    v2.71.0
  • Все последнее стабильное на дату публикации


Подробнее здесь: https://stackoverflow.com/questions/796 ... -grpc-call
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»