Refactor logging and add benchmark.

This commit is contained in:
Christian
2018-05-11 22:00:54 +02:00
parent e14ea9a240
commit 8df8cb1eb6
27 changed files with 318 additions and 219 deletions
@@ -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)
{