MqttNetLoggerWrapper.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using Microsoft.Extensions.Logging;
  2. using MQTTnet.Diagnostics;
  3. using System;
  4. using System.Threading;
  5. namespace MQTTnet.Server.Logging
  6. {
  7. public class MqttNetLoggerWrapper : IMqttNetLogger
  8. {
  9. readonly ILogger<MqttServer> _logger;
  10. public MqttNetLoggerWrapper(ILogger<MqttServer> logger)
  11. {
  12. _logger = logger ?? throw new ArgumentNullException(nameof(logger));
  13. }
  14. public event EventHandler<MqttNetLogMessagePublishedEventArgs> LogMessagePublished;
  15. public IMqttNetLogger CreateChildLogger(string source)
  16. {
  17. return new MqttNetLogger(source);
  18. }
  19. public void Publish(MqttNetLogLevel level, string source, string message, object[] parameters, Exception exception)
  20. {
  21. var convertedLogLevel = ConvertLogLevel(level);
  22. _logger.Log(convertedLogLevel, exception, message, parameters);
  23. var logMessagePublishedEvent = LogMessagePublished;
  24. if (logMessagePublishedEvent != null)
  25. {
  26. var logMessage = new MqttNetLogMessage
  27. {
  28. Timestamp = DateTime.UtcNow,
  29. ThreadId = Thread.CurrentThread.ManagedThreadId,
  30. Source = source,
  31. Level = level,
  32. Message = message,
  33. Exception = exception
  34. };
  35. logMessagePublishedEvent.Invoke(this, new MqttNetLogMessagePublishedEventArgs(logMessage));
  36. }
  37. }
  38. public void Publish(MqttNetLogLevel logLevel, string message, object[] parameters, Exception exception)
  39. {
  40. Publish(logLevel, null, message, parameters, exception);
  41. }
  42. static LogLevel ConvertLogLevel(MqttNetLogLevel logLevel)
  43. {
  44. switch (logLevel)
  45. {
  46. case MqttNetLogLevel.Error: return LogLevel.Error;
  47. case MqttNetLogLevel.Warning: return LogLevel.Warning;
  48. case MqttNetLogLevel.Info: return LogLevel.Information;
  49. case MqttNetLogLevel.Verbose: return LogLevel.Debug;
  50. }
  51. return LogLevel.Debug;
  52. }
  53. }
  54. }