mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-18 18:43:10 +08:00
Refactor tracing
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
namespace MQTTnet.Core.Diagnostics
|
||||
{
|
||||
public interface IMqttNetTraceHandler
|
||||
{
|
||||
bool IsEnabled { get; }
|
||||
|
||||
void HandleTraceMessage(MqttNetTraceMessage traceMessage);
|
||||
}
|
||||
}
|
||||
@@ -2,48 +2,62 @@
|
||||
|
||||
namespace MQTTnet.Core.Diagnostics
|
||||
{
|
||||
public static class MqttNetTrace
|
||||
public sealed class MqttNetTrace : IMqttNetTraceHandler
|
||||
{
|
||||
private readonly IMqttNetTraceHandler _traceHandler;
|
||||
|
||||
public MqttNetTrace(IMqttNetTraceHandler traceHandler = null)
|
||||
{
|
||||
_traceHandler = traceHandler ?? this;
|
||||
}
|
||||
|
||||
public static event EventHandler<MqttNetTraceMessagePublishedEventArgs> TraceMessagePublished;
|
||||
|
||||
public static void Verbose(string source, string message, params object[] parameters)
|
||||
public bool IsEnabled => TraceMessagePublished != null;
|
||||
|
||||
public void Verbose(string source, string message, params object[] parameters)
|
||||
{
|
||||
Publish(source, MqttNetTraceLevel.Verbose, null, message, parameters);
|
||||
}
|
||||
|
||||
public static void Information(string source, string message, params object[] parameters)
|
||||
public void Information(string source, string message, params object[] parameters)
|
||||
{
|
||||
Publish(source, MqttNetTraceLevel.Information, null, message, parameters);
|
||||
}
|
||||
|
||||
public static void Warning(string source, string message, params object[] parameters)
|
||||
public void Warning(string source, string message, params object[] parameters)
|
||||
{
|
||||
Publish(source, MqttNetTraceLevel.Warning, null, message, parameters);
|
||||
}
|
||||
|
||||
public static void Warning(string source, Exception exception, string message, params object[] parameters)
|
||||
public void Warning(string source, Exception exception, string message, params object[] parameters)
|
||||
{
|
||||
Publish(source, MqttNetTraceLevel.Warning, exception, message, parameters);
|
||||
}
|
||||
|
||||
public static void Error(string source, string message, params object[] parameters)
|
||||
public void Error(string source, string message, params object[] parameters)
|
||||
{
|
||||
Publish(source, MqttNetTraceLevel.Error, null, message, parameters);
|
||||
}
|
||||
|
||||
public static void Error(string source, Exception exception, string message, params object[] parameters)
|
||||
public void Error(string source, Exception exception, string message, params object[] parameters)
|
||||
{
|
||||
Publish(source, MqttNetTraceLevel.Error, exception, message, parameters);
|
||||
}
|
||||
|
||||
private static void Publish(string source, MqttNetTraceLevel traceLevel, Exception exception, string message, params object[] parameters)
|
||||
public void HandleTraceMessage(MqttNetTraceMessage mqttNetTraceMessage)
|
||||
{
|
||||
var handler = TraceMessagePublished;
|
||||
if (handler == null)
|
||||
TraceMessagePublished?.Invoke(this, new MqttNetTraceMessagePublishedEventArgs(mqttNetTraceMessage));
|
||||
}
|
||||
|
||||
private void Publish(string source, MqttNetTraceLevel traceLevel, Exception exception, string message, params object[] parameters)
|
||||
{
|
||||
if (!_traceHandler.IsEnabled)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var now = DateTime.Now;
|
||||
if (parameters?.Length > 0)
|
||||
{
|
||||
try
|
||||
@@ -57,7 +71,7 @@ namespace MQTTnet.Core.Diagnostics
|
||||
}
|
||||
}
|
||||
|
||||
handler.Invoke(null, new MqttNetTraceMessagePublishedEventArgs(Environment.CurrentManagedThreadId, source, traceLevel, message, exception));
|
||||
_traceHandler.HandleTraceMessage(new MqttNetTraceMessage(now, Environment.CurrentManagedThreadId, source, traceLevel, message, exception));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
using System;
|
||||
|
||||
namespace MQTTnet.Core.Diagnostics
|
||||
{
|
||||
public sealed class MqttNetTraceMessage
|
||||
{
|
||||
public MqttNetTraceMessage(DateTime timestamp, int threadId, string source, MqttNetTraceLevel level, string message, Exception exception)
|
||||
{
|
||||
Timestamp = timestamp;
|
||||
ThreadId = threadId;
|
||||
Source = source;
|
||||
Level = level;
|
||||
Message = message;
|
||||
Exception = exception;
|
||||
}
|
||||
|
||||
public DateTime Timestamp { get; }
|
||||
|
||||
public int ThreadId { get; }
|
||||
|
||||
public string Source { get; }
|
||||
|
||||
public MqttNetTraceLevel Level { get; }
|
||||
|
||||
public string Message { get; }
|
||||
|
||||
public Exception Exception { get; }
|
||||
}
|
||||
}
|
||||
@@ -4,23 +4,11 @@ namespace MQTTnet.Core.Diagnostics
|
||||
{
|
||||
public sealed class MqttNetTraceMessagePublishedEventArgs : EventArgs
|
||||
{
|
||||
public MqttNetTraceMessagePublishedEventArgs(int threadId, string source, MqttNetTraceLevel level, string message, Exception exception)
|
||||
public MqttNetTraceMessagePublishedEventArgs(MqttNetTraceMessage traceMessage)
|
||||
{
|
||||
ThreadId = threadId;
|
||||
Source = source;
|
||||
Level = level;
|
||||
Message = message;
|
||||
Exception = exception;
|
||||
TraceMessage = traceMessage ?? throw new ArgumentNullException(nameof(traceMessage));
|
||||
}
|
||||
|
||||
public int ThreadId { get; }
|
||||
|
||||
public string Source { get; }
|
||||
|
||||
public MqttNetTraceLevel Level { get; }
|
||||
|
||||
public string Message { get; }
|
||||
|
||||
public Exception Exception { get; }
|
||||
public MqttNetTraceMessage TraceMessage { get; }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user