Using Microsoft.Extensions.Logging, let be the log initialization (F#):
let myLogger =
LoggerFactory
.Create(fun builder ->
builder
.AddSimpleConsole()
.SetMinimumLevel(myLevel)
|> ignore)
.CreateLogger()
How do we change that minimum level later, on demand?
I am looking to something as simple as:
myLogger.ChangeMinimumLevelTo(newLevel)
For anyone else needing this solution, but in C#, this is @Franco Tiveron's solution translated:
void changeMinimumLevel(ILogger logger, LogLevel level)
{
var _logger = logger
.GetType()
.GetField("_logger", BindingFlags.NonPublic | BindingFlags.Instance)
.GetValue(logger);
var loggersArray =
(Array)_logger
.GetType()
.GetProperty("MessageLoggers")
.GetValue(_logger);
var enu = loggersArray.GetEnumerator();
var i = 0;
while (enu.MoveNext())
{
var x = enu.Current;
var piMinLevel = x.GetType().GetProperty("MinLevel");
var fiMinLevel = piMinLevel.GetBackingField();
fiMinLevel.SetValue(x, level);
loggersArray.SetValue(x, i);
i++;
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With