mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-20 19:58:57 +08:00
Refactor logging and add benchmark.
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
using System;
|
||||
|
||||
namespace MQTTnet.Diagnostics
|
||||
{
|
||||
public interface IMqttNetChildLogger
|
||||
{
|
||||
IMqttNetChildLogger CreateChildLogger(string source);
|
||||
|
||||
void Verbose(string message, params object[] parameters);
|
||||
|
||||
void Info(string message, params object[] parameters);
|
||||
|
||||
void Warning(Exception exception, string message, params object[] parameters);
|
||||
|
||||
void Error(Exception exception, string message, params object[] parameters);
|
||||
}
|
||||
}
|
||||
@@ -6,20 +6,8 @@ namespace MQTTnet.Diagnostics
|
||||
{
|
||||
event EventHandler<MqttNetLogMessagePublishedEventArgs> LogMessagePublished;
|
||||
|
||||
void Verbose<TSource>(string message, params object[] parameters);
|
||||
IMqttNetChildLogger CreateChildLogger(string source);
|
||||
|
||||
void Verbose(object source, string message, params object[] parameters);
|
||||
|
||||
void Info<TSource>(string message, params object[] parameters);
|
||||
|
||||
void Info(object source, string message, params object[] parameters);
|
||||
|
||||
void Warning<TSource>(Exception exception, string message, params object[] parameters);
|
||||
|
||||
void Warning(object source, Exception exception, string message, params object[] parameters);
|
||||
|
||||
void Error<TSource>(Exception exception, string message, params object[] parameters);
|
||||
|
||||
void Error(object source, Exception exception, string message, params object[] parameters);
|
||||
void Publish(MqttNetLogLevel logLevel, string source, string message, object[] parameters, Exception exception);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
using System;
|
||||
|
||||
namespace MQTTnet.Diagnostics
|
||||
{
|
||||
public sealed class MqttNetChildLogger : IMqttNetChildLogger
|
||||
{
|
||||
private readonly IMqttNetLogger _logger;
|
||||
private readonly string _source;
|
||||
|
||||
public MqttNetChildLogger(IMqttNetLogger logger, string source)
|
||||
{
|
||||
_logger = logger;
|
||||
_source = source;
|
||||
}
|
||||
|
||||
public IMqttNetChildLogger CreateChildLogger(string source)
|
||||
{
|
||||
string childSource;
|
||||
if (!string.IsNullOrEmpty(_source))
|
||||
{
|
||||
childSource = _source + "." + source;
|
||||
}
|
||||
else
|
||||
{
|
||||
childSource = source;
|
||||
}
|
||||
|
||||
return new MqttNetChildLogger(_logger, childSource);
|
||||
}
|
||||
|
||||
public void Verbose(string message, params object[] parameters)
|
||||
{
|
||||
_logger.Publish(MqttNetLogLevel.Verbose, _source, message, parameters, null);
|
||||
}
|
||||
|
||||
public void Info(string message, params object[] parameters)
|
||||
{
|
||||
_logger.Publish(MqttNetLogLevel.Info, _source, message, parameters, null);
|
||||
}
|
||||
|
||||
public void Warning(Exception exception, string message, params object[] parameters)
|
||||
{
|
||||
_logger.Publish(MqttNetLogLevel.Warning, _source, message, parameters, exception);
|
||||
}
|
||||
|
||||
public void Error(Exception exception, string message, params object[] parameters)
|
||||
{
|
||||
_logger.Publish(MqttNetLogLevel.Error, _source, message, parameters, exception);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
namespace MQTTnet.Diagnostics
|
||||
{
|
||||
public class MqttNetLogger : IMqttNetLogger
|
||||
public sealed class MqttNetLogger : IMqttNetLogger
|
||||
{
|
||||
private readonly string _logId;
|
||||
|
||||
@@ -13,47 +13,12 @@ namespace MQTTnet.Diagnostics
|
||||
|
||||
public event EventHandler<MqttNetLogMessagePublishedEventArgs> LogMessagePublished;
|
||||
|
||||
public void Verbose<TSource>(string message, params object[] parameters)
|
||||
public IMqttNetChildLogger CreateChildLogger(string source)
|
||||
{
|
||||
Publish(MqttNetLogLevel.Verbose, typeof(TSource), message, parameters, null);
|
||||
return new MqttNetChildLogger(this, source);
|
||||
}
|
||||
|
||||
public void Verbose(object source, string message, params object[] parameters)
|
||||
{
|
||||
Publish(MqttNetLogLevel.Verbose, source, message, parameters, null);
|
||||
}
|
||||
|
||||
public void Info<TSource>(string message, params object[] parameters)
|
||||
{
|
||||
Publish(MqttNetLogLevel.Info, typeof(TSource), message, parameters, null);
|
||||
}
|
||||
|
||||
public void Info(object source, string message, params object[] parameters)
|
||||
{
|
||||
Publish(MqttNetLogLevel.Info, source, message, parameters, null);
|
||||
}
|
||||
|
||||
public void Warning<TSource>(Exception exception, string message, params object[] parameters)
|
||||
{
|
||||
Publish(MqttNetLogLevel.Warning, typeof(TSource), message, parameters, null);
|
||||
}
|
||||
|
||||
public void Warning(object source, Exception exception, string message, params object[] parameters)
|
||||
{
|
||||
Publish(MqttNetLogLevel.Warning, source, message, parameters, null);
|
||||
}
|
||||
|
||||
public void Error<TSource>(Exception exception, string message, params object[] parameters)
|
||||
{
|
||||
Publish(MqttNetLogLevel.Error, typeof(TSource), message, parameters, null);
|
||||
}
|
||||
|
||||
public void Error(object source, Exception exception, string message, params object[] parameters)
|
||||
{
|
||||
Publish(MqttNetLogLevel.Error, source, message, parameters, null);
|
||||
}
|
||||
|
||||
private void Publish(MqttNetLogLevel logLevel, object source, string message, object[] parameters, Exception exception)
|
||||
public void Publish(MqttNetLogLevel logLevel, string source, string message, object[] parameters, Exception exception)
|
||||
{
|
||||
var hasLocalListeners = LogMessagePublished != null;
|
||||
var hasGlobalListeners = MqttNetGlobalLogger.HasListeners;
|
||||
@@ -63,18 +28,19 @@ namespace MQTTnet.Diagnostics
|
||||
return;
|
||||
}
|
||||
|
||||
if (parameters.Length > 0)
|
||||
if (parameters?.Length > 0)
|
||||
{
|
||||
message = string.Format(message, parameters);
|
||||
try
|
||||
{
|
||||
message = string.Format(message, parameters);
|
||||
}
|
||||
catch
|
||||
{
|
||||
message = "MESSAGE FORMAT INVALID: " + message;
|
||||
}
|
||||
}
|
||||
|
||||
string sourceName = null;
|
||||
if (source != null)
|
||||
{
|
||||
sourceName = source.GetType().Name;
|
||||
}
|
||||
|
||||
var traceMessage = new MqttNetLogMessage(_logId, DateTime.Now, Environment.CurrentManagedThreadId, sourceName, logLevel, message, exception);
|
||||
var traceMessage = new MqttNetLogMessage(_logId, DateTime.UtcNow, Environment.CurrentManagedThreadId, source, logLevel, message, exception);
|
||||
|
||||
if (hasGlobalListeners)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user