using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.VisualStudio.TestTools.UnitTesting; using MQTTnet.Core.Diagnostics; namespace MQTTnet.Core.Tests { [TestClass] public class MqttLoggerProviderTest { [TestMethod] public void TestLoggerCallback() { var serviceCollection = new ServiceCollection(); serviceCollection.AddLogging(); var serviceProvider = serviceCollection.BuildServiceProvider(); using ((IDisposable)serviceProvider) { var loggerFactory = serviceProvider.GetRequiredService(); loggerFactory.AddMqttTrace(); var expectedMsg = "Hello World!"; MqttNetTraceMessage msg = null; MqttNetTrace.TraceMessagePublished += (sender, args) => { msg = args.TraceMessage; }; var logger = loggerFactory.CreateLogger(); logger.LogInformation(expectedMsg); Assert.AreEqual(expectedMsg, msg.Message); var expectedException = new Exception("bad stuff"); logger.LogError(new EventId(), expectedException, expectedException.Message); Assert.AreEqual(expectedException, msg.Exception); Assert.AreEqual(expectedException.Message, msg.Message); } } } }