Coder Social home page Coder Social logo

Pass-through of `M.E.L.ILogger.BeginScope()` when using custom MEL `ILoggingProvider` as Serilog sink? about serilog-extensions-logging HOT 5 OPEN

DavidHopkinsFbr avatar DavidHopkinsFbr commented on August 19, 2024
Pass-through of `M.E.L.ILogger.BeginScope()` when using custom MEL `ILoggingProvider` as Serilog sink?

from serilog-extensions-logging.

Comments (5)

bartelink avatar bartelink commented on August 19, 2024 1

If you're looking to solve this quickly, SO has way more people and is better suited to troubleshooting than GH issues - anyone that watches this repo watches the serilog tag there too

from serilog-extensions-logging.

DavidHopkinsFbr avatar DavidHopkinsFbr commented on August 19, 2024 1

Ok thanks. Sorry for any notification spam. Looks like I can get the desired behavior by never calling UseSerilog() and instead adding Serilog as a parallel provider alongside my custom provider, like so:

host.ConfigureLogging(logBuilder =>
		{
			logBuilder.SetMinimumLevel(LogLevel.Trace);
			logBuilder.ClearProviders();
			logBuilder.AddProvider(new MessageDatabaseLoggerProvider());
			logBuilder.AddSerilog();
		});

I'm not sure if the lack of pass-through of BeginScope() with UseSerilog() and provider registration is a bug or by design, but this is a configuration that's working for my use case. I will leave it to project authors to decide if a bug exists; if not, please feel free to close the issue.

from serilog-extensions-logging.

bartelink avatar bartelink commented on August 19, 2024 1

Don't worry about the notification spam; my main concern is stopping the frustration of logging stuff in the official Issues of a high traffic project to be met with crickets. I know SO can quite often feel like it just has a few more crickets for anything that's nontrivial.

Main point is that issues in the Serilog repo necessarily are handled on a very async and intermittent basis, but it's a fact that anyone that's going to be useful in this will probably see it on SO first; whether or not they have time to answer it in the moment is a different matter.

In other words, extending the problem discussion or logging research notes isn't a problem, and I'm not trying to chase you away; just set realistic expectations.

from serilog-extensions-logging.

DavidHopkinsFbr avatar DavidHopkinsFbr commented on August 19, 2024

I'm running Microsoft.Extensions.Hosting 8.0.0, Microsoft.Extensions.Logging 8.0.0, Serilog.Extensions.Hosting 8.0.0, Serilog.Extensions.Logging 8.0.0, and Serilog 3.1.1, on .NET 8. The host configuration APIs are using the .NET 6 style because I only recently upgraded to .NET 8.

from serilog-extensions-logging.

DavidHopkinsFbr avatar DavidHopkinsFbr commented on August 19, 2024

I've also tried adding the custom provider via conventional DI injection and then instructing Serilog to write to existing providers, using code like below:

Host.CreateDefaultBuilder(args)
  .ConfigureLogging(logBuilder =>
  {
	  logBuilder.SetMinimumLevel(LogLevel.Trace);
	  logBuilder.ClearProviders();
	  logBuilder.AddProvider(new MessageDatabaseLoggerProvider());
  })
  .UseSerilog(
	  (hostingContext, loggerConfiguration) => ConfigureSerilog(loggerConfiguration), writeToProviders: true);

Serilog doesn't let the custom logger see the ILogger.BeginScope() calls when configured that way, either.
If I completely remove the call to .UseSerilog(), then my custom provider does receive the BeginScope() invocations.

from serilog-extensions-logging.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.