mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-20 19:58:57 +08:00
Make logger parameters generic.
This commit is contained in:
@@ -4,6 +4,8 @@ namespace MQTTnet.Diagnostics.Logger
|
|||||||
{
|
{
|
||||||
public interface IMqttNetLogger
|
public interface IMqttNetLogger
|
||||||
{
|
{
|
||||||
|
bool IsEnabled { get; }
|
||||||
|
|
||||||
void Publish(MqttNetLogLevel logLevel, string source, string message, object[] parameters, Exception exception);
|
void Publish(MqttNetLogLevel logLevel, string source, string message, object[] parameters, Exception exception);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ namespace MQTTnet.Diagnostics.Logger
|
|||||||
|
|
||||||
public string LogId { get; }
|
public string LogId { get; }
|
||||||
|
|
||||||
|
public bool IsEnabled { get; set; } = true;
|
||||||
|
|
||||||
public void Publish(MqttNetLogLevel level, string source, string message, object[] parameters, Exception exception)
|
public void Publish(MqttNetLogLevel level, string source, string message, object[] parameters, Exception exception)
|
||||||
{
|
{
|
||||||
var eventHandler = LogMessagePublished;
|
var eventHandler = LogMessagePublished;
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ namespace MQTTnet.Diagnostics.Logger
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public sealed class MqttNetNullLogger : IMqttNetLogger
|
public sealed class MqttNetNullLogger : IMqttNetLogger
|
||||||
{
|
{
|
||||||
|
public bool IsEnabled { get; }
|
||||||
|
|
||||||
public void Publish(MqttNetLogLevel logLevel, string source, string message, object[] parameters, Exception exception)
|
public void Publish(MqttNetLogLevel logLevel, string source, string message, object[] parameters, Exception exception)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ namespace MQTTnet.Diagnostics.Logger
|
|||||||
_source = source;
|
_source = source;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool IsEnabled => _logger.IsEnabled;
|
||||||
|
|
||||||
public void Publish(MqttNetLogLevel logLevel, string message, object[] parameters, Exception exception)
|
public void Publish(MqttNetLogLevel logLevel, string message, object[] parameters, Exception exception)
|
||||||
{
|
{
|
||||||
_logger.Publish(logLevel, _source, message, parameters, exception);
|
_logger.Publish(logLevel, _source, message, parameters, exception);
|
||||||
|
|||||||
@@ -4,66 +4,176 @@ namespace MQTTnet.Diagnostics.Logger
|
|||||||
{
|
{
|
||||||
public static class MqttNetSourceLoggerExtensions
|
public static class MqttNetSourceLoggerExtensions
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
* The logger uses generic parameters in order to avoid boxing of parameter values like integers etc.
|
||||||
|
*/
|
||||||
|
|
||||||
public static MqttNetSourceLogger WithSource(this IMqttNetLogger logger, string source)
|
public static MqttNetSourceLogger WithSource(this IMqttNetLogger logger, string source)
|
||||||
{
|
{
|
||||||
if (logger == null) throw new ArgumentNullException(nameof(logger));
|
if (logger == null) throw new ArgumentNullException(nameof(logger));
|
||||||
|
|
||||||
return new MqttNetSourceLogger(logger, source);
|
return new MqttNetSourceLogger(logger, source);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Verbose(this MqttNetSourceLogger logger, string message, params object[] parameters)
|
public static void Verbose<TParameter1>(this MqttNetSourceLogger logger, string message, TParameter1 parameter1)
|
||||||
{
|
{
|
||||||
logger.Publish(MqttNetLogLevel.Verbose, message, parameters, null);
|
if (!logger.IsEnabled)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.Publish(MqttNetLogLevel.Verbose, message, new object[] {parameter1}, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void Verbose<TParameter1, TParameter2>(this MqttNetSourceLogger logger, string message, TParameter1 parameter1, TParameter2 parameter2)
|
||||||
|
{
|
||||||
|
if (!logger.IsEnabled)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.Publish(MqttNetLogLevel.Verbose, message, new object[] {parameter1, parameter2}, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Verbose<TParameter1, TParameter2, TParameter3>(this MqttNetSourceLogger logger, string message, TParameter1 parameter1, TParameter2 parameter2,
|
||||||
|
TParameter3 parameter3)
|
||||||
|
{
|
||||||
|
if (!logger.IsEnabled)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.Publish(MqttNetLogLevel.Verbose, message, new object[] {parameter1, parameter2, parameter3}, null);
|
||||||
|
}
|
||||||
|
|
||||||
public static void Verbose(this MqttNetSourceLogger logger, string message)
|
public static void Verbose(this MqttNetSourceLogger logger, string message)
|
||||||
{
|
{
|
||||||
|
if (!logger.IsEnabled)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
logger.Publish(MqttNetLogLevel.Verbose, message, null, null);
|
logger.Publish(MqttNetLogLevel.Verbose, message, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Info(this MqttNetSourceLogger logger, string message, params object[] parameters)
|
public static void Info<TParameter1>(this MqttNetSourceLogger logger, string message, TParameter1 parameter1)
|
||||||
{
|
{
|
||||||
logger.Publish(MqttNetLogLevel.Info, message, parameters, null);
|
if (!logger.IsEnabled)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.Publish(MqttNetLogLevel.Info, message, new object[] {parameter1}, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void Info<TParameter1, TParameter2>(this MqttNetSourceLogger logger, string message, TParameter1 parameter1, TParameter2 parameter2)
|
||||||
|
{
|
||||||
|
if (!logger.IsEnabled)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.Publish(MqttNetLogLevel.Info, message, new object[] {parameter1, parameter2}, null);
|
||||||
|
}
|
||||||
|
|
||||||
public static void Info(this MqttNetSourceLogger logger, string message)
|
public static void Info(this MqttNetSourceLogger logger, string message)
|
||||||
{
|
{
|
||||||
|
if (!logger.IsEnabled)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
logger.Publish(MqttNetLogLevel.Info, message, null, null);
|
logger.Publish(MqttNetLogLevel.Info, message, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Warning(this MqttNetSourceLogger logger, Exception exception, string message, params object[] parameters)
|
public static void Warning<TParameter1>(this MqttNetSourceLogger logger, Exception exception, string message, TParameter1 parameter1)
|
||||||
{
|
{
|
||||||
logger.Publish(MqttNetLogLevel.Warning, message, parameters, exception);
|
if (!logger.IsEnabled)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.Publish(MqttNetLogLevel.Warning, message, new object[] {parameter1}, exception);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Warning<TParameter1, TParameter2>(this MqttNetSourceLogger logger, Exception exception, string message, TParameter1 parameter1, TParameter2 parameter2)
|
||||||
|
{
|
||||||
|
if (!logger.IsEnabled)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.Publish(MqttNetLogLevel.Warning, message, new object[] {parameter1, parameter2}, exception);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Warning(this MqttNetSourceLogger logger, Exception exception, string message)
|
public static void Warning(this MqttNetSourceLogger logger, Exception exception, string message)
|
||||||
{
|
{
|
||||||
|
if (!logger.IsEnabled)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
logger.Publish(MqttNetLogLevel.Warning, message, null, exception);
|
logger.Publish(MqttNetLogLevel.Warning, message, null, exception);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Warning(this MqttNetSourceLogger logger, string message, params object[] parameters)
|
public static void Warning<TParameter1>(this MqttNetSourceLogger logger, string message, TParameter1 parameter1)
|
||||||
{
|
{
|
||||||
logger.Publish(MqttNetLogLevel.Warning, message, parameters, null);
|
if (!logger.IsEnabled)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.Publish(MqttNetLogLevel.Warning, message, new object[] {parameter1}, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Warning(this MqttNetSourceLogger logger, string message)
|
public static void Warning(this MqttNetSourceLogger logger, string message)
|
||||||
{
|
{
|
||||||
|
if (!logger.IsEnabled)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
logger.Publish(MqttNetLogLevel.Warning, message, null, null);
|
logger.Publish(MqttNetLogLevel.Warning, message, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Error(this MqttNetSourceLogger logger, Exception exception, string message, params object[] parameters)
|
public static void Error<TParameter1>(this MqttNetSourceLogger logger, Exception exception, string message, TParameter1 parameter1)
|
||||||
{
|
{
|
||||||
logger.Publish(MqttNetLogLevel.Error, message, parameters, exception);
|
if (!logger.IsEnabled)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.Publish(MqttNetLogLevel.Error, message, new object[] {parameter1}, exception);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void Error<TParameter1, TParameter2>(this MqttNetSourceLogger logger, Exception exception, string message, TParameter1 parameter1, TParameter2 parameter2)
|
||||||
|
{
|
||||||
|
if (!logger.IsEnabled)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.Publish(MqttNetLogLevel.Error, message, new object[] {parameter1, parameter2}, exception);
|
||||||
|
}
|
||||||
|
|
||||||
public static void Error(this MqttNetSourceLogger logger, Exception exception, string message)
|
public static void Error(this MqttNetSourceLogger logger, Exception exception, string message)
|
||||||
{
|
{
|
||||||
|
if (!logger.IsEnabled)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
logger.Publish(MqttNetLogLevel.Error, message, null, exception);
|
logger.Publish(MqttNetLogLevel.Error, message, null, exception);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Error(this MqttNetSourceLogger logger, string message)
|
public static void Error(this MqttNetSourceLogger logger, string message)
|
||||||
{
|
{
|
||||||
|
if (!logger.IsEnabled)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
logger.Publish(MqttNetLogLevel.Error, message, null, null);
|
logger.Publish(MqttNetLogLevel.Error, message, null, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -35,7 +35,7 @@ namespace MQTTnet.Tests.Logger
|
|||||||
|
|
||||||
childLogger.Verbose("Verbose");
|
childLogger.Verbose("Verbose");
|
||||||
childLogger.Info("Info");
|
childLogger.Info("Info");
|
||||||
childLogger.Warning(null, "Warning");
|
childLogger.Warning((Exception)null, "Warning");
|
||||||
childLogger.Error(null, "Error");
|
childLogger.Error(null, "Error");
|
||||||
|
|
||||||
Assert.AreEqual(4, logMessagesCount);
|
Assert.AreEqual(4, logMessagesCount);
|
||||||
@@ -55,7 +55,7 @@ namespace MQTTnet.Tests.Logger
|
|||||||
|
|
||||||
childLogger.Verbose("Verbose");
|
childLogger.Verbose("Verbose");
|
||||||
childLogger.Info("Info");
|
childLogger.Info("Info");
|
||||||
childLogger.Warning(null, "Warning");
|
childLogger.Warning((Exception)null, "Warning");
|
||||||
childLogger.Error(null, "Error");
|
childLogger.Error(null, "Error");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ namespace MQTTnet.Tests.Logger
|
|||||||
};
|
};
|
||||||
|
|
||||||
var sourceLogger = logger.WithSource("The_Source");
|
var sourceLogger = logger.WithSource("The_Source");
|
||||||
sourceLogger.Info("MESSAGE", null, null);
|
sourceLogger.Info("MESSAGE", (object)null, (object)null);
|
||||||
|
|
||||||
Assert.AreEqual("The_Source", logMessage.Source);
|
Assert.AreEqual("The_Source", logMessage.Source);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,9 @@ namespace MQTTnet.Tests.Mockups
|
|||||||
public sealed class TestLogger : IMqttNetLogger
|
public sealed class TestLogger : IMqttNetLogger
|
||||||
{
|
{
|
||||||
public event EventHandler<MqttNetLogMessagePublishedEventArgs> LogMessagePublished;
|
public event EventHandler<MqttNetLogMessagePublishedEventArgs> LogMessagePublished;
|
||||||
|
|
||||||
|
public bool IsEnabled { get; } = true;
|
||||||
|
|
||||||
public void Publish(MqttNetLogLevel logLevel, string source, string message, object[] parameters, Exception exception)
|
public void Publish(MqttNetLogLevel logLevel, string source, string message, object[] parameters, Exception exception)
|
||||||
{
|
{
|
||||||
LogMessagePublished?.Invoke(this, new MqttNetLogMessagePublishedEventArgs(new MqttNetLogMessage
|
LogMessagePublished?.Invoke(this, new MqttNetLogMessagePublishedEventArgs(new MqttNetLogMessage
|
||||||
|
|||||||
@@ -190,7 +190,7 @@ namespace MQTTnet.Tests
|
|||||||
var responseSender = await testEnvironment.ConnectClient();
|
var responseSender = await testEnvironment.ConnectClient();
|
||||||
await responseSender.SubscribeAsync("MQTTnet.RPC/+/ping", MqttQualityOfServiceLevel.AtMostOnce);
|
await responseSender.SubscribeAsync("MQTTnet.RPC/+/ping", MqttQualityOfServiceLevel.AtMostOnce);
|
||||||
|
|
||||||
responseSender.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(async e =>
|
responseSender.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(e =>
|
||||||
{
|
{
|
||||||
Assert.IsNull(e.ApplicationMessage.ResponseTopic);
|
Assert.IsNull(e.ApplicationMessage.ResponseTopic);
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user