選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 
 

64 行
2.2 KiB

  1. using System;
  2. namespace MQTTnet.Core.Diagnostics
  3. {
  4. public static class MqttTrace
  5. {
  6. public static event EventHandler<MqttTraceMessagePublishedEventArgs> TraceMessagePublished;
  7. public static void Verbose(string source, string message, params object[] parameters)
  8. {
  9. Publish(source, MqttTraceLevel.Verbose, null, message, parameters);
  10. }
  11. public static void Information(string source, string message, params object[] parameters)
  12. {
  13. Publish(source, MqttTraceLevel.Information, null, message, parameters);
  14. }
  15. public static void Warning(string source, string message, params object[] parameters)
  16. {
  17. Publish(source, MqttTraceLevel.Warning, null, message, parameters);
  18. }
  19. public static void Warning(string source, Exception exception, string message, params object[] parameters)
  20. {
  21. Publish(source, MqttTraceLevel.Warning, exception, message, parameters);
  22. }
  23. public static void Error(string source, string message, params object[] parameters)
  24. {
  25. Publish(source, MqttTraceLevel.Error, null, message, parameters);
  26. }
  27. public static void Error(string source, Exception exception, string message, params object[] parameters)
  28. {
  29. Publish(source, MqttTraceLevel.Error, exception, message, parameters);
  30. }
  31. private static void Publish(string source, MqttTraceLevel traceLevel, Exception exception, string message, params object[] parameters)
  32. {
  33. var handler = TraceMessagePublished;
  34. if (handler == null)
  35. {
  36. return;
  37. }
  38. if (parameters?.Length > 0)
  39. {
  40. try
  41. {
  42. message = string.Format(message, parameters);
  43. }
  44. catch (Exception formatException)
  45. {
  46. Error(nameof(MqttTrace), formatException, "Error while tracing message: " + message);
  47. return;
  48. }
  49. }
  50. handler.Invoke(null, new MqttTraceMessagePublishedEventArgs(Environment.CurrentManagedThreadId, source, traceLevel, message, exception));
  51. }
  52. }
  53. }