2

I have created my custom ILogger and it is working fine with console application. Now I have added reference to OpenTelemetry in my project and I found that Log messages that are displayed on console are not logged in my custom ILogger. How can I integrate my custom ILogger to configuration pipeline of OpenTelemetry?

My project contains these classes

[ProviderAlias("CsvLoggerConfigSection")]
internal sealed class CsvLoggerProvider : ILoggerProvider
{
  // implementation
}
public class CsvILogger : ILogger
{
  // implementation
}
internal class CsvTraceListener : TraceListener
{
  // implementation
}
public static class CsvLoggerExtensions
{
    public static ILoggingBuilder AddCsvLogger(this ILoggingBuilder builder)
    {
        // implementation
    }

    public static ILoggingBuilder AddCsvLogger(this ILoggingBuilder builder,Action<CsvLoggerOptions> configure)
    {
        // implementation
    }
}

public static class CsvLoggerRegistration
{
    public static IHostBuilder RegisterCsvLogger(this IHostBuilder builder)
    {
        // implementation
        
    }
    public static IHost RegisterCsvLoggerWithTraceListener(this IHost host)
    {
        Trace.AutoFlush = true;
        var factory = host.Services.GetRequiredService<ILoggerFactory>();
        Trace.Listeners.Add(new CsvTraceListener(factory));
        return host;
    }
}


    

And my ConsoleApp program.cs is like

using OpenTelemetry;
using OpenTelemetry.Trace;

Package Ref:
OpenTelemetry
OpenTelemetry.Exporter.Console
OpenTelemetry.Instrumentation.Http


 static async Task Main(string[] args)
 {
     var host = Host.CreateDefaultBuilder(args)
                    .RegisterCsvLogger()
                    .Build()
                    .RegisterCsvLoggerWithTraceListener();

     using var tracerProvider = Sdk.CreateTracerProviderBuilder()
         .AddSource("Sample.Console")
         .AddHttpClientInstrumentation()
         .AddConsoleExporter()  //How can I add my custom ILogger "CsvLogger" in this pipeline?
         .Build();
     await CallWebEndpoint();        
 }
Hemendr
  • 673
  • 6
  • 12

0 Answers0