Skip to content
Merged
7 changes: 5 additions & 2 deletions dotnet/src/webdriver/Internal/Logging/LogContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,10 @@ public LogContext(LogEventLevel level, ILogContext? parentLogContext, Concurrent

_parentLogContext = parentLogContext;

_loggers = loggers;
if (loggers is not null)
{
_loggers = new ConcurrentDictionary<Type, ILogger>(loggers.Select(l => new KeyValuePair<Type, ILogger>(l.Key, new Logger(l.Value.Issuer, level))));
}

if (handlers is not null)
{
Expand Down Expand Up @@ -98,7 +101,7 @@ public ILogger GetLogger(Type type)

public bool IsEnabled(ILogger logger, LogEventLevel level)
{
return Handlers != null && level >= _level && level >= logger.Level;
return Handlers != null && level >= _level && level >= _loggers?[logger.Issuer]?.Level;
}

public void EmitMessage(ILogger logger, LogEventLevel level, string message)
Expand Down
24 changes: 24 additions & 0 deletions dotnet/test/common/Internal/Logging/LogTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,27 @@ public class LogTest
private TestLogHandler testLogHandler;
private ILogger logger;

private void ResetGlobalLog()
{
Log.SetLevel(LogEventLevel.Info);
Log.Handlers.Clear().Handlers.Add(new ConsoleLogHandler());
}

[SetUp]
public void SetUp()
{
ResetGlobalLog();

testLogHandler = new TestLogHandler();
logger = Log.GetLogger<LogTest>();
}

[TearDown]
public void TearDown()
{
ResetGlobalLog();
}

[Test]
public void LoggerShouldEmitEvent()
{
Expand Down Expand Up @@ -160,6 +174,16 @@ public void ContextShouldChangeLevel()
Assert.That(logger.Level, Is.EqualTo(LogEventLevel.Warn));
}

[Test]
public void ContextShouldEmitMessages()
{
using var context = Log.CreateContext(LogEventLevel.Trace).Handlers.Add(testLogHandler);

logger.Trace("test message");

Assert.That(testLogHandler.Events.Count, Is.EqualTo(1));
}

[Test]
public void ShouldCreateContextWithCustomHandler()
{
Expand Down
Loading