mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-25 23:53:07 +08:00
Removed 3rd-Party libraries.
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
using System;
|
||||
|
||||
namespace MQTTnet.Core.Diagnostics
|
||||
{
|
||||
public interface IMqttNetLogger
|
||||
{
|
||||
event EventHandler<MqttNetLogMessagePublishedEventArgs> LogMessagePublished;
|
||||
|
||||
void Trace<TSource>(string message, params object[] parameters);
|
||||
|
||||
void Info<TSource>(string message, params object[] parameters);
|
||||
|
||||
void Warning<TSource>(Exception exception, string message, params object[] parameters);
|
||||
|
||||
void Warning<TSource>(string message, params object[] parameters);
|
||||
|
||||
void Error<TSource>(Exception exception, string message, params object[] parameters);
|
||||
|
||||
void Error<TSource>(string message, params object[] parameters);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
using System;
|
||||
|
||||
namespace MQTTnet.Core.Diagnostics
|
||||
{
|
||||
public static class MqttNetGlobalLog
|
||||
{
|
||||
public static event EventHandler<MqttNetLogMessagePublishedEventArgs> LogMessagePublished;
|
||||
|
||||
public static bool HasListeners => LogMessagePublished != null;
|
||||
|
||||
public static void Publish(MqttNetLogMessage logMessage)
|
||||
{
|
||||
if (logMessage == null) throw new ArgumentNullException(nameof(logMessage));
|
||||
|
||||
LogMessagePublished?.Invoke(null, new MqttNetLogMessagePublishedEventArgs(logMessage));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
namespace MQTTnet.Core.Diagnostics
|
||||
{
|
||||
public enum MqttNetLogLevel
|
||||
{
|
||||
Verbose,
|
||||
|
||||
Info,
|
||||
|
||||
Warning,
|
||||
|
||||
Error
|
||||
}
|
||||
}
|
||||
+6
-4
@@ -1,12 +1,12 @@
|
||||
using System;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace MQTTnet.Core.Diagnostics
|
||||
{
|
||||
public sealed class MqttNetTraceMessage
|
||||
public sealed class MqttNetLogMessage
|
||||
{
|
||||
public MqttNetTraceMessage(DateTime timestamp, int threadId, string source, LogLevel level, string message, Exception exception)
|
||||
public MqttNetLogMessage(string logId, DateTime timestamp, int threadId, string source, MqttNetLogLevel level, string message, Exception exception)
|
||||
{
|
||||
LogId = logId;
|
||||
Timestamp = timestamp;
|
||||
ThreadId = threadId;
|
||||
Source = source;
|
||||
@@ -15,13 +15,15 @@ namespace MQTTnet.Core.Diagnostics
|
||||
Exception = exception;
|
||||
}
|
||||
|
||||
public string LogId { get; }
|
||||
|
||||
public DateTime Timestamp { get; }
|
||||
|
||||
public int ThreadId { get; }
|
||||
|
||||
public string Source { get; }
|
||||
|
||||
public LogLevel Level { get; }
|
||||
public MqttNetLogLevel Level { get; }
|
||||
|
||||
public string Message { get; }
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
using System;
|
||||
|
||||
namespace MQTTnet.Core.Diagnostics
|
||||
{
|
||||
public sealed class MqttNetLogMessagePublishedEventArgs : EventArgs
|
||||
{
|
||||
public MqttNetLogMessagePublishedEventArgs(MqttNetLogMessage logMessage)
|
||||
{
|
||||
TraceMessage = logMessage ?? throw new ArgumentNullException(nameof(logMessage));
|
||||
}
|
||||
|
||||
public MqttNetLogMessage TraceMessage { get; }
|
||||
}
|
||||
}
|
||||
@@ -1,52 +1,73 @@
|
||||
using System;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace MQTTnet.Core.Diagnostics
|
||||
{
|
||||
public class MqttNetLogger : ILogger
|
||||
public class MqttNetLogger : IMqttNetLogger
|
||||
{
|
||||
private readonly string _categoryName;
|
||||
private readonly MqttNetTrace _mqttNetTrace;
|
||||
private readonly string _logId;
|
||||
|
||||
public MqttNetLogger(string categoryName, MqttNetTrace mqttNetTrace)
|
||||
public MqttNetLogger(string logId = null)
|
||||
{
|
||||
_categoryName = categoryName;
|
||||
_mqttNetTrace = mqttNetTrace;
|
||||
_logId = logId;
|
||||
}
|
||||
|
||||
public event EventHandler<MqttNetLogMessagePublishedEventArgs> LogMessagePublished;
|
||||
|
||||
public void Trace<TSource>(string message, params object[] parameters)
|
||||
{
|
||||
Publish<TSource>(MqttNetLogLevel.Verbose, null, message, parameters);
|
||||
}
|
||||
|
||||
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
|
||||
public void Info<TSource>(string message, params object[] parameters)
|
||||
{
|
||||
if (formatter == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(formatter));
|
||||
}
|
||||
Publish<TSource>(MqttNetLogLevel.Info, null, message, parameters);
|
||||
}
|
||||
|
||||
if (!MqttNetTrace.HasListeners)
|
||||
public void Warning<TSource>(Exception exception, string message, params object[] parameters)
|
||||
{
|
||||
Publish<TSource>(MqttNetLogLevel.Warning, exception, message, parameters);
|
||||
}
|
||||
|
||||
public void Warning<TSource>(string message, params object[] parameters)
|
||||
{
|
||||
Warning<TSource>(null, message, parameters);
|
||||
}
|
||||
|
||||
public void Error<TSource>(Exception exception, string message, params object[] parameters)
|
||||
{
|
||||
Publish<TSource>(MqttNetLogLevel.Error, exception, message, parameters);
|
||||
}
|
||||
|
||||
public void Error<TSource>(string message, params object[] parameters)
|
||||
{
|
||||
Warning<TSource>(null, message, parameters);
|
||||
}
|
||||
|
||||
private void Publish<TSource>(MqttNetLogLevel logLevel, Exception exception, string message, object[] parameters)
|
||||
{
|
||||
var hasLocalListeners = LogMessagePublished != null;
|
||||
var hasGlobalListeners = MqttNetGlobalLog.HasListeners;
|
||||
|
||||
if (!hasLocalListeners && !hasGlobalListeners)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var message = formatter(state, exception);
|
||||
var traceMessage = new MqttNetTraceMessage(DateTime.Now, Environment.CurrentManagedThreadId, _categoryName, logLevel, message, exception);
|
||||
_mqttNetTrace.Publish(traceMessage);
|
||||
}
|
||||
|
||||
public bool IsEnabled(LogLevel logLevel)
|
||||
{
|
||||
return MqttNetTrace.HasListeners;
|
||||
}
|
||||
|
||||
//not supported: async local requires netstandard1.3
|
||||
//for implementation see https://github.com/aspnet/Logging/blob/dev/src/Microsoft.Extensions.Logging.Console/ConsoleLogScope.cs
|
||||
public IDisposable BeginScope<TState>(TState state)
|
||||
{
|
||||
return new DisposableScope();
|
||||
}
|
||||
|
||||
private class DisposableScope : IDisposable
|
||||
{
|
||||
public void Dispose()
|
||||
if (parameters.Length > 0)
|
||||
{
|
||||
message = string.Format(message, parameters);
|
||||
}
|
||||
|
||||
var traceMessage = new MqttNetLogMessage(_logId, DateTime.Now, Environment.CurrentManagedThreadId, typeof(TSource).Name, logLevel, message, exception);
|
||||
|
||||
if (hasGlobalListeners)
|
||||
{
|
||||
MqttNetGlobalLog.Publish(traceMessage);
|
||||
}
|
||||
|
||||
if (hasLocalListeners)
|
||||
{
|
||||
LogMessagePublished?.Invoke(this, new MqttNetLogMessagePublishedEventArgs(traceMessage));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace MQTTnet.Core.Diagnostics
|
||||
{
|
||||
public class MqttNetTrace : ILoggerProvider
|
||||
{
|
||||
private readonly ConcurrentDictionary<string, MqttNetLogger> _loggers = new ConcurrentDictionary<string, MqttNetLogger>();
|
||||
|
||||
public static event EventHandler<MqttNetTraceMessagePublishedEventArgs> TraceMessagePublished;
|
||||
|
||||
public static bool HasListeners => TraceMessagePublished != null;
|
||||
|
||||
public void Publish(MqttNetTraceMessage traceMessage)
|
||||
{
|
||||
TraceMessagePublished?.Invoke(this, new MqttNetTraceMessagePublishedEventArgs(traceMessage));
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
TraceMessagePublished = null;
|
||||
}
|
||||
|
||||
public ILogger CreateLogger(string categoryName)
|
||||
{
|
||||
return _loggers.GetOrAdd(categoryName, CreateLoggerImplementation);
|
||||
}
|
||||
|
||||
private MqttNetLogger CreateLoggerImplementation(string categoryName)
|
||||
{
|
||||
return new MqttNetLogger(categoryName, this);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace MQTTnet.Core.Diagnostics
|
||||
{
|
||||
public sealed class MqttNetTraceMessagePublishedEventArgs : EventArgs
|
||||
{
|
||||
public MqttNetTraceMessagePublishedEventArgs(MqttNetTraceMessage traceMessage)
|
||||
{
|
||||
TraceMessage = traceMessage ?? throw new ArgumentNullException(nameof(traceMessage));
|
||||
}
|
||||
|
||||
public MqttNetTraceMessage TraceMessage { get; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user