调整mqttlog

This commit is contained in:
Kimdiego2098
2023-10-23 20:43:58 +08:00
parent ebd3390db6
commit d30ea7f63b
10 changed files with 118 additions and 116 deletions

View File

@@ -56,10 +56,10 @@
<Compile Include="..\..\Plugin\ThingsGateway.Plugin.Mqtt\MqttRpcNameVaueWithId.cs" Link="Pages\Mqtt\MqttRpcNameVaueWithId.cs" />
<Compile Include="..\..\Plugin\ThingsGateway.Plugin.Mqtt\Page\MqttClientDebugPage.razor.cs" Link="Pages\Mqtt\MqttClientDebugPage.razor.cs" />
<Compile Include="..\..\Plugin\ThingsGateway.Plugin.Mqtt\Page\MqttClientPage.razor.cs" Link="Pages\Mqtt\MqttClientPage.razor.cs" />
<Compile Include="..\..\Plugin\ThingsGateway.Plugin.Mqtt\PrivateLogger.cs" Link="Pages\Mqtt\PrivateLogger.cs" />
<Compile Include="..\..\Plugin\ThingsGateway.Plugin.Mqtt\RpcClass\MqttRpcClient.cs" Link="Pages\Mqtt\MqttRpcClient.cs" />
<Compile Include="..\..\Plugin\ThingsGateway.Plugin.Mqtt\RpcClass\MqttRpcClientExtensions.cs" Link="Pages\Mqtt\MqttRpcClientExtensions.cs" />
<Compile Include="..\..\Plugin\ThingsGateway.Plugin.Mqtt\RpcClass\MqttRpcTopicPair.cs" Link="Pages\Mqtt\MqttRpcTopicPair.cs" />
<Compile Include="..\..\Web\ThingsGateway.Gateway.Application\Workers\ManageGateway\MqttLoggerExtensions.cs" Link="Pages\Mqtt\MqttLoggerExtensions.cs" />
<Content Include="..\..\Plugin\ThingsGateway.Plugin.DLT645\Page\DLT645_2007DebugPage.razor" Link="Pages\DLT645\DLT645_2007DebugPage.razor" />
<Compile Include="..\..\Plugin\ThingsGateway.Plugin.DLT645\Page\DLT645_2007OverTcpDebugPage.razor.cs" Link="Pages\DLT645\DLT645_2007OverTcpDebugPage.razor.cs" />
<Content Include="..\..\Plugin\ThingsGateway.Plugin.DLT645\Page\DLT645_2007OverTcpDebugPage.razor" Link="Pages\DLT645\DLT645_2007OverTcpDebugPage.razor" />
@@ -115,7 +115,7 @@
</ItemGroup>
<ItemGroup >
<ItemGroup>
<!--<PackageReference Include="ThingsGateway.Foundation.Adapter.DLT645" Version="*" />
<PackageReference Include="ThingsGateway.Foundation.Adapter.Modbus" Version="*" />
<PackageReference Include="ThingsGateway.Foundation.Adapter.OPCDA" Version="*" />
@@ -128,7 +128,7 @@
<ProjectReference Include="..\..\Foundation\ThingsGateway.Foundation.Adapter.Siemens\ThingsGateway.Foundation.Adapter.Siemens.csproj" />
</ItemGroup>
<ItemGroup >
<ItemGroup>
<ProjectReference Include="..\..\Web\ThingsGateway.Components\ThingsGateway.Components.csproj" />
</ItemGroup>

View File

@@ -20,6 +20,7 @@ using Microsoft.Extensions.Logging;
using MQTTnet;
using MQTTnet.Client;
using MQTTnet.Diagnostics;
using System.Collections.Concurrent;
@@ -310,7 +311,9 @@ public class IotSharpClient : UpLoadBase
/// <inheritdoc/>
protected override void Init(UploadDeviceRunTime device)
{
var mqttFactory = new MqttFactory(new PrivateLogger(LogMessage));
var log = new MqttNetEventLogger();
log.LogMessagePublished += Log_LogMessagePublished;
var mqttFactory = new MqttFactory(log);
_mqttClientOptions = mqttFactory.CreateClientOptionsBuilder()
.WithClientId(Guid.NewGuid().ToString())
.WithCredentials(driverPropertys.Accesstoken)//账密
@@ -355,6 +358,11 @@ public class IotSharpClient : UpLoadBase
exDeviceTimerTick = new(driverPropertys.UploadInterval);
}
private void Log_LogMessagePublished(object sender, MqttNetLogMessagePublishedEventArgs e)
{
LogMessage.LogOut(e.LogMessage.Level, e.LogMessage.Source, e.LogMessage.Message, e.LogMessage.Exception);
}
private void DeviceStatusChange(CollectDeviceRunTime collectDeviceRunTime)
{
if (driverPropertys?.IsInterval != true)

View File

@@ -18,6 +18,7 @@ using Microsoft.Extensions.Logging;
using MQTTnet;
using MQTTnet.Client;
using MQTTnet.Diagnostics;
using System.Collections.Concurrent;
using System.Text;
@@ -300,7 +301,9 @@ public class MqttClient : UpLoadBase
/// <inheritdoc/>
protected override void Init(UploadDeviceRunTime device)
{
var mqttFactory = new MqttFactory(new PrivateLogger(LogMessage));
var log = new MqttNetEventLogger();
log.LogMessagePublished += Log_LogMessagePublished;
var mqttFactory = new MqttFactory(log);
_mqttClientOptions = mqttFactory.CreateClientOptionsBuilder()
.WithClientId(driverPropertys.ConnectId)
.WithCredentials(driverPropertys.UserName, driverPropertys.Password)//账密
@@ -353,6 +356,11 @@ public class MqttClient : UpLoadBase
}
private void Log_LogMessagePublished(object sender, MqttNetLogMessagePublishedEventArgs e)
{
LogMessage.LogOut(e.LogMessage.Level, e.LogMessage.Source, e.LogMessage.Message, e.LogMessage.Exception);
}
private async Task AllPublishAsync(CancellationToken cancellationToken)
{
//保留消息

View File

@@ -17,6 +17,7 @@ using Mapster;
using Microsoft.Extensions.Logging;
using MQTTnet;
using MQTTnet.Diagnostics;
using MQTTnet.Internal;
using MQTTnet.Protocol;
using MQTTnet.Server;
@@ -224,7 +225,9 @@ public class MqttServer : UpLoadBase
/// <inheritdoc/>
protected override void Init(UploadDeviceRunTime device)
{
var mqttFactory = new MqttFactory(new PrivateLogger(LogMessage));
var log = new MqttNetEventLogger();
log.LogMessagePublished += Log_LogMessagePublished;
var mqttFactory = new MqttFactory(log);
var mqttServerOptions = mqttFactory.CreateServerOptionsBuilder()
.WithDefaultEndpointBoundIPAddress(string.IsNullOrEmpty(driverPropertys.IP) ? null : IPAddress.Parse(driverPropertys.IP))
.WithDefaultEndpointPort(driverPropertys.Port)
@@ -251,7 +254,10 @@ public class MqttServer : UpLoadBase
});
}
private void Log_LogMessagePublished(object sender, MqttNetLogMessagePublishedEventArgs e)
{
LogMessage.LogOut(e.LogMessage.Level, e.LogMessage.Source, e.LogMessage.Message, e.LogMessage.Exception);
}
private void DeviceStatusChange(CollectDeviceRunTime collectDeviceRunTime)
{
_collectDeviceRunTimes.Enqueue(collectDeviceRunTime.Adapt<DeviceData>());

View File

@@ -12,11 +12,10 @@
using MQTTnet;
using MQTTnet.Client;
using MQTTnet.Diagnostics;
using System.Text;
using ThingsGateway.Plugin.Mqtt;
namespace ThingsGateway.Foundation.Demo;
/// <summary>
/// MqttClientPage
@@ -56,14 +55,19 @@ public partial class MqttClientPage
/// <inheritdoc/>
protected override void OnInitialized()
{
MqttFactory = new MqttFactory(new PrivateLogger(new EasyLogger(LogAction) { LogLevel = LogLevel.Trace }));
var log = new MqttNetEventLogger();
log.LogMessagePublished += Log_LogMessagePublished;
MqttFactory = new MqttFactory(log);
MqttClient = MqttFactory.CreateMqttClient();
MqttClient.ApplicationMessageReceivedAsync += MqttClient_ApplicationMessageReceivedAsync;
base.OnInitialized();
}
private void Log_LogMessagePublished(object sender, MqttNetLogMessagePublishedEventArgs e)
{
new EasyLogger(LogAction) { LogLevel = LogLevel.Trace }.LogOut(e.LogMessage.Level, e.LogMessage.Source, e.LogMessage.Message, e.LogMessage.Exception);
}
private async Task Connect()
{
try

View File

@@ -1,49 +0,0 @@
#region copyright
//------------------------------------------------------------------------------
// 此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充
// 此代码版权除特别声明外的代码归作者本人Diego所有
// 源代码使用协议遵循本仓库的开源协议及附加协议
// Gitee源代码仓库https://gitee.com/diego2098/ThingsGateway
// Github源代码仓库https://github.com/kimdiego2098/ThingsGateway
// 使用文档https://diego2098.gitee.io/thingsgateway-docs/
// QQ群605534569
//------------------------------------------------------------------------------
#endregion
using MQTTnet.Diagnostics;
namespace ThingsGateway.Plugin.Mqtt
{
internal class PrivateLogger : IMqttNetLogger
{
readonly ILog LogMessage;
public PrivateLogger(ILog logger)
{
LogMessage = logger;
}
public bool IsEnabled => true;
public void Publish(MqttNetLogLevel logLevel, string source, string message, object[] parameters, Exception exception)
{
switch (logLevel)
{
case MqttNetLogLevel.Verbose:
LogMessage?.Log(LogLevel.Trace, source, message != null ? (parameters != null ? message != null ? (parameters != null ? string.Format(message, parameters) : message) : string.Empty : message) : string.Empty, exception);
break;
case MqttNetLogLevel.Info:
LogMessage?.Log(LogLevel.Info, source, message != null ? (parameters != null ? string.Format(message, parameters) : message) : string.Empty, exception);
break;
case MqttNetLogLevel.Warning:
LogMessage?.Log(LogLevel.Warning, source, message != null ? (parameters != null ? string.Format(message, parameters) : message) : string.Empty, exception);
break;
case MqttNetLogLevel.Error:
LogMessage?.Log(LogLevel.Warning, source, message != null ? (parameters != null ? string.Format(message, parameters) : message) : string.Empty, exception);
break;
}
}
}
}

View File

@@ -20,6 +20,7 @@ using Microsoft.Extensions.Logging;
using MQTTnet;
using MQTTnet.Client;
using MQTTnet.Diagnostics;
using MQTTnet.Internal;
using MQTTnet.Protocol;
using MQTTnet.Server;
@@ -392,7 +393,9 @@ public class ManageGatewayWorker : BackgroundService
}
else
{
var mqttFactory = new MqttFactory(new MqttNetLogger(_manageLogger));
var log = new MqttNetEventLogger();
log.LogMessagePublished += ServerLog_LogMessagePublished;
var mqttFactory = new MqttFactory(log);
var mqttServerOptions = mqttFactory.CreateServerOptionsBuilder()
.WithDefaultEndpointBoundIPAddress(string.IsNullOrEmpty(ManageGatewayConfig.MqttBrokerIP) ? null : IPAddress.Parse(ManageGatewayConfig.MqttBrokerIP))
.WithDefaultEndpointPort(ManageGatewayConfig.MqttBrokerPort)
@@ -426,7 +429,9 @@ public class ManageGatewayWorker : BackgroundService
}
else
{
var mqttFactory = new MqttFactory(new MqttNetLogger(_clientLogger));
var log = new MqttNetEventLogger();
log.LogMessagePublished += Log_LogMessagePublished;
var mqttFactory = new MqttFactory(log);
_mqttClientOptions = mqttFactory.CreateClientOptionsBuilder()
.WithCredentials(ClientGatewayConfig.UserName, ClientGatewayConfig.Password)//账密
.WithTcpServer(ClientGatewayConfig.MqttBrokerIP, ClientGatewayConfig.MqttBrokerPort)//服务器
@@ -468,6 +473,14 @@ public class ManageGatewayWorker : BackgroundService
}
}
private void Log_LogMessagePublished(object sender, MqttNetLogMessagePublishedEventArgs e)
{
_clientLogger.LogOut(e.LogMessage.Level, e.LogMessage.Source, e.LogMessage.Message, e.LogMessage.Exception);
}
private void ServerLog_LogMessagePublished(object sender, MqttNetLogMessagePublishedEventArgs e)
{
_manageLogger.LogOut(e.LogMessage.Level, e.LogMessage.Source, e.LogMessage.Message, e.LogMessage.Exception);
}
/// <summary>
/// ClientGatewayConfig

View File

@@ -0,0 +1,65 @@
#region copyright
//------------------------------------------------------------------------------
// 此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充
// 此代码版权除特别声明外的代码归作者本人Diego所有
// 源代码使用协议遵循本仓库的开源协议及附加协议
// Gitee源代码仓库https://gitee.com/diego2098/ThingsGateway
// Github源代码仓库https://github.com/kimdiego2098/ThingsGateway
// 使用文档https://diego2098.gitee.io/thingsgateway-docs/
// QQ群605534569
//------------------------------------------------------------------------------
#endregion
using Microsoft.Extensions.Logging;
using MQTTnet.Diagnostics;
namespace ThingsGateway.Gateway.Application;
public static class MqttLoggerExtensions
{
public static void LogOut(this ILog LogMessage, MqttNetLogLevel logLevel, string source, string message, Exception exception)
{
switch (logLevel)
{
case MqttNetLogLevel.Verbose:
LogMessage?.Log(Foundation.Core.LogLevel.Trace, source, message, exception);
break;
case MqttNetLogLevel.Info:
LogMessage?.Log(Foundation.Core.LogLevel.Info, source, message, exception);
break;
case MqttNetLogLevel.Warning:
LogMessage?.Log(Foundation.Core.LogLevel.Warning, source, message, exception);
break;
case MqttNetLogLevel.Error:
LogMessage?.Log(Foundation.Core.LogLevel.Warning, source, message, exception);
break;
}
}
public static void LogOut(this ILogger LogMessage, MqttNetLogLevel logLevel, string source, string message, Exception exception)
{
switch (logLevel)
{
case MqttNetLogLevel.Verbose:
LogMessage?.Log(Microsoft.Extensions.Logging.LogLevel.Trace, source, message, exception);
break;
case MqttNetLogLevel.Info:
LogMessage?.Log(Microsoft.Extensions.Logging.LogLevel.Information, source, message, exception);
break;
case MqttNetLogLevel.Warning:
LogMessage?.Log(Microsoft.Extensions.Logging.LogLevel.Warning, source, message, exception);
break;
case MqttNetLogLevel.Error:
LogMessage?.Log(Microsoft.Extensions.Logging.LogLevel.Warning, source, message, exception);
break;
}
}
}

View File

@@ -1,51 +0,0 @@
#region copyright
//------------------------------------------------------------------------------
// 此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充
// 此代码版权除特别声明外的代码归作者本人Diego所有
// 源代码使用协议遵循本仓库的开源协议及附加协议
// Gitee源代码仓库https://gitee.com/diego2098/ThingsGateway
// Github源代码仓库https://github.com/kimdiego2098/ThingsGateway
// 使用文档https://diego2098.gitee.io/thingsgateway-docs/
// QQ群605534569
//------------------------------------------------------------------------------
#endregion
using Microsoft.Extensions.Logging;
using MQTTnet.Diagnostics;
using LogLevel = Microsoft.Extensions.Logging.LogLevel;
namespace ThingsGateway.Gateway.Application;
internal class MqttNetLogger : IMqttNetLogger
{
readonly ILogger LogMessage;
public MqttNetLogger(ILogger logger)
{
LogMessage = logger;
}
public bool IsEnabled => true;
public void Publish(MqttNetLogLevel logLevel, string source, string message, object[] parameters, Exception exception)
{
switch (logLevel)
{
case MqttNetLogLevel.Verbose:
LogMessage?.Log(LogLevel.Trace, source, message != null ? (parameters != null ? message != null ? (parameters != null ? string.Format(message, parameters) : message) : string.Empty : message) : string.Empty, exception);
break;
case MqttNetLogLevel.Info:
LogMessage?.Log(LogLevel.Information, source, message != null ? (parameters != null ? string.Format(message, parameters) : message) : string.Empty, exception);
break;
case MqttNetLogLevel.Warning:
LogMessage?.Log(LogLevel.Warning, source, message != null ? (parameters != null ? string.Format(message, parameters) : message) : string.Empty, exception);
break;
case MqttNetLogLevel.Error:
LogMessage?.Log(LogLevel.Warning, source, message != null ? (parameters != null ? string.Format(message, parameters) : message) : string.Empty, exception);
break;
}
}
}

View File

@@ -14,8 +14,6 @@ using Furion.Templates;
using System.Reflection;
using ThingsGateway.Admin.Core;
namespace ThingsGateway.Web.Entry;
/// <summary>
@@ -60,7 +58,7 @@ public class Program
builder.WebHost.UseKestrel(
o =>
{
var config = Furion.App.GetConfig<MqttConfig>("MqttConfig", true);
var config = Furion.App.GetConfig<LK.Application.MqttConfig>("MqttConfig", true);
o.ListenAnyIP(config.Port, a => MQTTnet.AspNetCore.ConnectionBuilderExtensions.UseMqtt(a));