Я пытаюсь использовать OpenTracing.Contrib.NetCore с Serilog.Мне нужно отправить Jaeger мои пользовательские журналы.Теперь он работает только тогда, когда я использую фабрику логгеров по умолчанию Microsoft.Extensions.Logging.ILoggerFactory
Мой запуск:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddSingleton<ITracer>(sp =>
{
var loggerFactory = sp.GetRequiredService<ILoggerFactory>();
string serviceName = sp.GetRequiredService<IHostingEnvironment>().ApplicationName;
var samplerConfiguration = new Configuration.SamplerConfiguration(loggerFactory)
.WithType(ConstSampler.Type)
.WithParam(1);
var senderConfiguration = new Configuration.SenderConfiguration(loggerFactory)
.WithAgentHost("localhost")
.WithAgentPort(6831);
var reporterConfiguration = new Configuration.ReporterConfiguration(loggerFactory)
.WithLogSpans(true)
.WithSender(senderConfiguration);
var tracer = (Tracer)new Configuration(serviceName, loggerFactory)
.WithSampler(samplerConfiguration)
.WithReporter(reporterConfiguration)
.GetTracer();
//GlobalTracer.Register(tracer);
return tracer;
});
services.AddOpenTracing();
}
и где-то в контроллере:
[Route("api/[controller]")]
public class ValuesController : ControllerBase
{
private readonly ILogger<ValuesController> _logger;
public ValuesController(ILogger<ValuesController> logger)
{
_logger = logger;
}
[HttpGet("{id}")]
public ActionResult<string> Get(int id)
{
_logger.LogWarning("Get values by id: {valueId}", id);
return "value";
}
}
в результате Iсможет увидеть этот журнал в Jaeger UI
Но когда я использую Serilog, нет никаких пользовательских журналов.Я добавил UseSerilog()
к WebHostBuilder
и все пользовательские журналы, которые я вижу в консоли, но не в Jaeger.В github есть открытый выпуск.Не могли бы вы предложить, как я могу использовать Serilog с OpenTracing?