feat:增加NLog配置
This commit is contained in:
32
SocketHub/NLog.config
Normal file
32
SocketHub/NLog.config
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
autoReload="true">
|
||||||
|
|
||||||
|
<extensions>
|
||||||
|
<add assembly="NLog.Targets.Network" />
|
||||||
|
</extensions>
|
||||||
|
|
||||||
|
<targets async="true">
|
||||||
|
<target name="fluentbit" xsi:type="Network"
|
||||||
|
newLine="true" lineEnding="LF"
|
||||||
|
address="tcp://60.247.145.200:5170">
|
||||||
|
<layout xsi:type="JsonLayout">
|
||||||
|
<attribute name="topic" layout="message-hub"/>
|
||||||
|
<attribute name="timestamp" layout="${longdate:universalTime=true}"/>
|
||||||
|
<attribute name="level" layout="${level:uppercase=true}"/>
|
||||||
|
<attribute name="logger" layout="${logger}"/>
|
||||||
|
<attribute name="message" layout="${message}"/>
|
||||||
|
<attribute name="throwable" layout="${exception:format=ToString}"/>
|
||||||
|
</layout>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="stdout"
|
||||||
|
xsi:type="Console"
|
||||||
|
layout="${longdate} ${level:uppercase=true}: ${logger} - ${message}${onexception:${newline}${exception:format=ToString}}" />
|
||||||
|
</targets>
|
||||||
|
|
||||||
|
<rules>
|
||||||
|
<logger name="*" minlevel="Info" writeTo="stdout"/>
|
||||||
|
</rules>
|
||||||
|
</nlog>
|
||||||
@@ -1,26 +1,27 @@
|
|||||||
using System.Buffers;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.Hosting;
|
using Microsoft.Extensions.Hosting;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
|
using NLog.Extensions.Hosting;
|
||||||
using SuperSocket.ProtoBase;
|
using SuperSocket.ProtoBase;
|
||||||
using SuperSocket.Server;
|
using SuperSocket.Server;
|
||||||
using SuperSocket.Server.Abstractions;
|
using SuperSocket.Server.Abstractions;
|
||||||
|
using SuperSocket.Server.Abstractions.Session;
|
||||||
using SuperSocket.Server.Host;
|
using SuperSocket.Server.Host;
|
||||||
|
using SuperSocket.WebSocket;
|
||||||
using SuperSocket.WebSocket.Server;
|
using SuperSocket.WebSocket.Server;
|
||||||
|
using System.Buffers;
|
||||||
|
|
||||||
var host = Host.CreateDefaultBuilder(args)
|
var host = Host.CreateDefaultBuilder(args)
|
||||||
.ConfigureServices((context, services) =>
|
.ConfigureServices((context, services) =>
|
||||||
{
|
{
|
||||||
|
services.AddSingleton<IPackageHandler<ProtocolFrame>, TcpPackageHandler>();
|
||||||
|
services.AddSingleton<WebSocketMessageHandler>();
|
||||||
})
|
})
|
||||||
.AsMultipleServerHostBuilder()
|
.AsMultipleServerHostBuilder()
|
||||||
.AddServer<TcpService, ProtocolFrame, BinaryPipelineFilter>(builder =>
|
.AddServer<TcpService, ProtocolFrame, BinaryPipelineFilter>(builder =>
|
||||||
{
|
{
|
||||||
builder
|
builder
|
||||||
.UsePackageHandler(async (session, package) =>
|
|
||||||
{
|
|
||||||
Console.WriteLine($"Magic={package.Magic:X4}, Type={package.Type}, Len={package.Length}");
|
|
||||||
await session.SendAsync(package.Payload);
|
|
||||||
})
|
|
||||||
.ConfigureServerOptions((ctx, config) =>
|
.ConfigureServerOptions((ctx, config) =>
|
||||||
{
|
{
|
||||||
return config.GetSection("TcpServer");
|
return config.GetSection("TcpServer");
|
||||||
@@ -31,14 +32,21 @@ var host = Host.CreateDefaultBuilder(args)
|
|||||||
builder
|
builder
|
||||||
.UseWebSocketMessageHandler(async (session, package) =>
|
.UseWebSocketMessageHandler(async (session, package) =>
|
||||||
{
|
{
|
||||||
Console.WriteLine($"[WebSocket] ${package.Message}");
|
using var scope = session.Server.ServiceProvider.CreateScope();
|
||||||
await session.SendAsync("ok");
|
var handler = scope.ServiceProvider.GetRequiredService<WebSocketMessageHandler>();
|
||||||
|
|
||||||
|
await handler.HandleAsync(session, package);
|
||||||
})
|
})
|
||||||
.ConfigureServerOptions((ctx, config) =>
|
.ConfigureServerOptions((ctx, config) =>
|
||||||
{
|
{
|
||||||
return config.GetSection("WebSocketServer");
|
return config.GetSection("WebSocketServer");
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
.ConfigureLogging(logging =>
|
||||||
|
{
|
||||||
|
logging.ClearProviders();
|
||||||
|
})
|
||||||
|
.UseNLog()
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
await host.RunAsync();
|
await host.RunAsync();
|
||||||
@@ -52,8 +60,40 @@ public class TcpService : SuperSocketService<ProtocolFrame>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class TcpPackageHandler : IPackageHandler<ProtocolFrame>
|
||||||
|
{
|
||||||
|
private readonly ILogger<TcpPackageHandler> _logger;
|
||||||
|
|
||||||
|
public TcpPackageHandler(ILogger<TcpPackageHandler> logger)
|
||||||
|
{
|
||||||
|
_logger = logger;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async ValueTask Handle(IAppSession session, ProtocolFrame package, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
_logger.LogInformation($"Magic={package.Magic:X4}, Type={package.Type}, Len={package.Length}");
|
||||||
|
await session.SendAsync(package.Payload, cancellationToken);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class WebSocketMessageHandler
|
||||||
|
{
|
||||||
|
private readonly ILogger<WebSocketMessageHandler> _logger;
|
||||||
|
|
||||||
|
public WebSocketMessageHandler(ILogger<WebSocketMessageHandler> logger)
|
||||||
|
{
|
||||||
|
_logger = logger;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async ValueTask HandleAsync(WebSocketSession session, WebSocketPackage package)
|
||||||
|
{
|
||||||
|
_logger.LogInformation($"[WebSocket] {package.Message}");
|
||||||
|
await session.SendAsync("ok");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 协议数据结构
|
/// 协议数据结构 示例:65 6D 00 05 00 01 68 65 6C 6C 6F
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="Magic">帧头标识</param>
|
/// <param name="Magic">帧头标识</param>
|
||||||
/// <param name="Length">数据长度</param>
|
/// <param name="Length">数据长度</param>
|
||||||
|
|||||||
@@ -8,15 +8,26 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<PackageReference Include="NLog.Extensions.Hosting" Version="6.1.2" />
|
||||||
|
<PackageReference Include="NLog.Targets.Network" Version="6.0.4" />
|
||||||
<PackageReference Include="SuperSocket" Version="2.0.2" />
|
<PackageReference Include="SuperSocket" Version="2.0.2" />
|
||||||
<PackageReference Include="SuperSocket.WebSocket" Version="2.1.0" />
|
<PackageReference Include="SuperSocket.WebSocket" Version="2.1.0" />
|
||||||
<PackageReference Include="SuperSocket.WebSocket.Server" Version="2.1.0" />
|
<PackageReference Include="SuperSocket.WebSocket.Server" Version="2.1.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Update="Program.cs">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</Compile>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Update="appsettings.json">
|
<None Update="appsettings.json">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</None>
|
</None>
|
||||||
|
<None Update="NLog.config">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
Reference in New Issue
Block a user