SignalR logger, PaymentId to Transfer, etc...
This commit is contained in:
parent
9efe9ad250
commit
1cfa0c645d
|
|
@ -3,7 +3,7 @@ using AyCode.Core.Loggers;
|
|||
|
||||
namespace TIAM.Core.Loggers;
|
||||
|
||||
public class Logger<TCategory> : AcLoggerBase, ILogger<TCategory>
|
||||
public class Logger<TCategory> : Logger, ILogger<TCategory>
|
||||
{
|
||||
public Logger() : base(typeof(TCategory).Name)
|
||||
{ }
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ public class Transfer: IEntityGuid, IAcFullName, ITimeStampInfo, IProductForeign
|
|||
//public Guid? UserProductMappingId { get; set; }
|
||||
//public Guid? UserProductToCarId { get; set; }
|
||||
|
||||
public string? PaymentId { get; set; }
|
||||
//public virtual UserProductMapping? UserProductMapping { get; set; }
|
||||
public virtual List<TransferToDriver> TransferToDrivers { get; set; }
|
||||
|
||||
|
|
|
|||
|
|
@ -16,13 +16,17 @@
|
|||
@using TIAMWebApp.Shared.Application.Utility
|
||||
@using AyCode.Core.Loggers
|
||||
@using AyCode.Services.Loggers
|
||||
@using AyCode.Services.SignalRs
|
||||
@using TIAM.Core.Loggers
|
||||
@using TIAMWebApp.Shared.Application.Services
|
||||
@using AyCode.Core.Helpers
|
||||
@layout AdminLayout
|
||||
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
|
||||
@inject IStringLocalizer<TIAMResources> localizer
|
||||
@inject IWizardProcessor wizardProcessor
|
||||
@inject ITransferDataService transferDataService
|
||||
@inject ISessionService sessionService
|
||||
@* @inject DevAdminSignalClient DevAdminSignalClient; *@
|
||||
<PageTitle>Transfers</PageTitle>
|
||||
|
||||
<div class="text-center m-5">
|
||||
|
|
@ -387,6 +391,8 @@
|
|||
{
|
||||
_logger = new LoggerClient<ManageTransfers>(LogWriters.ToArray());
|
||||
|
||||
//await DevAdminSignalClient.Get("", SignalRTags.GetTransfersAsync);
|
||||
|
||||
TransferDataList = await transferDataService.GetTransfersAsync();
|
||||
AppointmentModels = new List<AppointmentModel>(TransferDataList.Count);
|
||||
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@
|
|||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
_logger = new LoggerClient<MainLayout>(LogWriters.ToArray());
|
||||
_logger = new LoggerClient<AdminLayout>(LogWriters.ToArray());
|
||||
|
||||
base.OnInitialized();
|
||||
}
|
||||
|
|
@ -68,10 +68,10 @@
|
|||
}
|
||||
catch (Exception loggerException)
|
||||
{
|
||||
jsRuntime.InvokeVoidAsync("console.error", $"{nameof(MainLayout)}->HandleError; Logger error! {loggerException}");
|
||||
jsRuntime.InvokeVoidAsync("console.error", $"{nameof(AdminLayout)}->HandleError; Logger error! {loggerException}");
|
||||
|
||||
jsRuntime.InvokeVoidAsync("console.error", $"{nameof(MainLayout)}->{memberName}; An error occurred: {exception}");
|
||||
//jsRuntime.InvokeVoidAsync("console.warn", $"{nameof(MainLayout)}->{memberName}; Error details: {exception.StackTrace}");
|
||||
jsRuntime.InvokeVoidAsync("console.error", $"{nameof(AdminLayout)}->{memberName}; An error occurred: {exception}");
|
||||
//jsRuntime.InvokeVoidAsync("console.warn", $"{nameof(AdminLayout)}->{memberName}; Error details: {exception.StackTrace}");
|
||||
}
|
||||
|
||||
// Log the error to server
|
||||
|
|
|
|||
|
|
@ -18,11 +18,8 @@
|
|||
@inject NavigationManager NavManager
|
||||
@inject IJSRuntime jsRuntime
|
||||
@inject ISecureStorageHandler SecureStorageHandler
|
||||
@inject ISessionService sessionService
|
||||
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
|
||||
|
||||
|
||||
|
||||
<!--div-- class="page"-->
|
||||
<div>
|
||||
|
||||
|
|
@ -61,10 +58,19 @@
|
|||
protected override void OnInitialized()
|
||||
{
|
||||
_logger = new LoggerClient<MainLayout>(LogWriters.ToArray());
|
||||
|
||||
//_logger.Writer<SignaRClientLogItemWriter>()?.StartConnection(Setting.UserBasicDetails?.RefreshToken ?? Guid.NewGuid().ToString("N"));
|
||||
|
||||
base.OnInitialized();
|
||||
}
|
||||
|
||||
protected override void OnAfterRender(bool firstRender)
|
||||
{
|
||||
// if (firstRender)
|
||||
// _logger.Writer<SignaRClientLogItemWriter>()?.StartConnection(Setting.UserBasicDetails?.RefreshToken ?? Guid.NewGuid().ToString("N"));
|
||||
|
||||
base.OnAfterRender(firstRender);
|
||||
}
|
||||
|
||||
private void HandleError(Exception exception)//, [CallerMemberName] string? memberName = null)
|
||||
{
|
||||
exception.GetCategoryAndMemberNameFromStackTraceString(out var memberName, out var categoryName);
|
||||
|
|
|
|||
|
|
@ -40,7 +40,9 @@ builder.Services.AddScoped<IImageDataService, ImageDataService>();
|
|||
builder.Services.AddScoped<SessionStorageAccessor>();
|
||||
builder.Services.AddSingleton(x => new ResourceManager("TIAMWebApp.Client.Resources.MyResources", typeof(Program).Assembly));
|
||||
builder.Services.AddSingleton<IAcLogWriterClientBase, BrowserConsoleLogWriter>();
|
||||
builder.Services.AddSingleton<IAcLogWriterClientBase, HttpClientLogItemWriter>();
|
||||
builder.Services.AddSingleton<IAcLogWriterClientBase, SignaRClientLogItemWriter>();
|
||||
//builder.Services.AddSingleton<IAcLogWriterClientBase, HttpClientLogItemWriter>();
|
||||
//builder.Services.AddSingleton<DevAdminSignalClient>();
|
||||
builder.Services.AddSingleton<SignalRService>();
|
||||
builder.Services.AddSingleton<SumupService>();
|
||||
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ namespace TIAMWebApp.Client.Services
|
|||
private readonly ISecureStorageHandler secureStorageHandler;
|
||||
//private readonly BrowserConsoleLogWriter _browserConsoleLogWriter;
|
||||
private readonly IServiceProviderDataService serviceProviderDataService;
|
||||
private readonly ILogger _logger;
|
||||
private readonly LoggerClient<UserDataServiceWeb> _logger;
|
||||
|
||||
|
||||
public Dictionary<int, string> userRoleTypes { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
|
||||
|
|
|
|||
|
|
@ -44,9 +44,8 @@ namespace TIAMWebApp.Server.Controllers
|
|||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($@"ERROR!!! {nameof(LoggerApiController)}->WriteLogItem; ex: {ex.Message}{AcEnv.NL}{AcEnv.NL}{ex}");
|
||||
Console.WriteLine($@"ERROR!!! {nameof(LoggerApiController)}->AddLogItem; ex: {ex.Message}{AcEnv.NL}{AcEnv.NL}{ex}");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -4,6 +4,8 @@ using Microsoft.IdentityModel.Tokens;
|
|||
using Microsoft.OpenApi.Models;
|
||||
using System.Text;
|
||||
using AyCode.Core.Loggers;
|
||||
using MessagePack;
|
||||
using MessagePack.Resolvers;
|
||||
using TIAM.Core.Loggers;
|
||||
using TIAM.Database;
|
||||
using TIAM.Database.DataLayers.Admins;
|
||||
|
|
@ -40,7 +42,7 @@ builder.Services.AddScoped<AdminDal>();
|
|||
builder.Services.AddScoped<AuctionDal>();
|
||||
builder.Services.AddScoped<TransferDestinationDal>();
|
||||
|
||||
builder.Services.AddSignalR();
|
||||
builder.Services.AddSignalR().AddMessagePackProtocol(options => options.SerializerOptions = MessagePackSerializerOptions.Standard.WithSecurity(MessagePackSecurity.UntrustedData));
|
||||
|
||||
builder.Services.AddCors(options =>
|
||||
{
|
||||
|
|
@ -172,8 +174,12 @@ app.UseAuthorization();
|
|||
app.MapRazorPages();
|
||||
app.MapControllers();
|
||||
app.MapBlazorHub();
|
||||
app.MapHub<SignalRHub>("/myhub");
|
||||
app.MapHub<DevAdminSignalRHub>("/adminhub");
|
||||
|
||||
//app.UseResponseCompression();
|
||||
app.MapHub<SignalRHub>("/TiamChatHub");
|
||||
app.MapHub<LoggerSignalRHub>("/TiamLoggerHub");
|
||||
//app.MapHub<DevAdminSignalRHub>("/DevAdminHub");
|
||||
|
||||
app.MapFallbackToFile("index.html");
|
||||
|
||||
app.Run();
|
||||
|
|
|
|||
|
|
@ -1,34 +1,48 @@
|
|||
using Microsoft.AspNetCore.SignalR;
|
||||
using AyCode.Core.Loggers;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
using System.ServiceModel.Channels;
|
||||
using AyCode.Services.Server.SignalRs;
|
||||
using AyCode.Services.SignalRs;
|
||||
using TIAM.Database.DataLayers.Admins;
|
||||
|
||||
namespace TIAMWebApp.Server.Services;
|
||||
public class DevAdminSignalRHub : Hub
|
||||
|
||||
public class DevAdminSignalRHub(AdminDal adminDal, IEnumerable<IAcLogWriterBase> logWriters) : Hub<ISignalRHubServer>, ISignalRHubServer
|
||||
{
|
||||
public async Task SendMessage(string user, string message)
|
||||
private TIAM.Core.Loggers.Logger<DevAdminSignalRHub> _logger = new(logWriters.ToArray());
|
||||
|
||||
// https://docs.microsoft.com/en-us/aspnet/core/signalr/hubs?view=aspnetcore-3.1#strongly-typed-hubs
|
||||
public override async Task OnConnectedAsync()
|
||||
{
|
||||
await Clients.All.SendAsync("ReceiveMessage", user, message);
|
||||
//await Groups.AddToGroupAsync(Context.ConnectionId, "SignalR Users");
|
||||
await base.OnConnectedAsync();
|
||||
}
|
||||
|
||||
public async Task MuteChat(string user)
|
||||
public override async Task OnDisconnectedAsync(Exception exception)
|
||||
{
|
||||
|
||||
await Clients.All.SendAsync("UserMuted", user);
|
||||
|
||||
}
|
||||
|
||||
public async Task LoggedInToChat(string user)
|
||||
{
|
||||
|
||||
await Clients.All.SendAsync("UserLoggedInToChat", user);
|
||||
|
||||
}
|
||||
|
||||
public async Task LoggedOutFromChat(string user)
|
||||
{
|
||||
|
||||
await Clients.All.SendAsync("UserLoggedOutFromChat", user);
|
||||
|
||||
_logger.Error($"OnDisconnectedAsync", exception);
|
||||
|
||||
//await Groups.RemoveFromGroupAsync(Context.ConnectionId, "SignalR Users");
|
||||
await base.OnDisconnectedAsync(exception);
|
||||
}
|
||||
|
||||
public async Task SendMessageToGroup(string groupId, int messageTag, string message)
|
||||
{
|
||||
//await Clients.Group(groupId).Post("", messageTag, message);
|
||||
}
|
||||
|
||||
}
|
||||
public async Task Get(string user, int messageTag)
|
||||
{
|
||||
_logger.Info($"{nameof(user)}: {user}; {nameof(messageTag)}: {messageTag}");
|
||||
|
||||
if (messageTag == SignalRTags.GetTransfersAsync)
|
||||
await Post("", SignalRTags.PostTransfersAsync, await adminDal.GetTransfersJsonAsync());
|
||||
}
|
||||
|
||||
public async Task Post(string user, int messageTag, object? message)
|
||||
{
|
||||
_logger.Info($"{nameof(user)}: {user}; {nameof(messageTag)}: {messageTag}");
|
||||
|
||||
await Clients.Caller.Post("", messageTag, message);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
using AyCode.Services.Server.SignalRs;
|
||||
|
||||
namespace TIAMWebApp.Server.Services;
|
||||
|
||||
public interface ISignalRHubServer : IAcSignalRHubServer
|
||||
{
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
using AyCode.Core.Consts;
|
||||
using AyCode.Entities.Server.LogItems;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
using TIAM.Database;
|
||||
|
||||
namespace TIAMWebApp.Server.Services;
|
||||
|
||||
|
||||
public class LoggerSignalRHub(LoggerToLoggerApiController logger) : Hub
|
||||
{
|
||||
public void AddLogItem(AcLogItem? logItem)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (logItem == null)
|
||||
{
|
||||
logger.Error("AddLogItem; LogItem == null");
|
||||
//_logger.Writer<ConsoleLogWriter>().Detail("");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
//logItem.LogHeaderId = ???
|
||||
logItem.TimeStampUtc = DateTime.UtcNow;
|
||||
|
||||
logger.Write(logItem);
|
||||
|
||||
//_logger.Writer<IAcConsoleLogWriter>()?.Write(logItem.AppType, logItem.LogLevel, logItem.Text, logItem.CallerName, logItem.CategoryName, logItem.ErrorType, logItem.Exception);
|
||||
//_logger.Writer<DbLogItemWriter>().WriteLogItemAsync(logItem);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($@"ERROR!!! {nameof(LoggerSignalRHub)}->AddLogItem; ex: {ex.Message}{AcEnv.NL}{AcEnv.NL}{ex}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
using Microsoft.AspNetCore.SignalR;
|
||||
|
||||
namespace TIAMWebApp.Server.Services;
|
||||
|
||||
public class SignalRHub : Hub
|
||||
{
|
||||
public async Task SendMessage(string user, string message)
|
||||
|
|
@ -10,25 +11,17 @@ public class SignalRHub : Hub
|
|||
|
||||
public async Task MuteChat(string user)
|
||||
{
|
||||
|
||||
await Clients.All.SendAsync("UserMuted", user);
|
||||
|
||||
}
|
||||
|
||||
public async Task LoggedInToChat(string user)
|
||||
{
|
||||
|
||||
await Clients.All.SendAsync("UserLoggedInToChat", user);
|
||||
|
||||
}
|
||||
|
||||
public async Task LoggedOutFromChat(string user)
|
||||
{
|
||||
|
||||
await Clients.All.SendAsync("UserLoggedOutFromChat", user);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
<PackageReference Include="GoogleApi" Version="5.4.3" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.5" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="8.0.5" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="8.0.5" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.5" />
|
||||
<PackageReference Include="Microsoft.OpenApi" Version="1.6.14" />
|
||||
<PackageReference Include="QRCoderNetCore" Version="1.0.0" />
|
||||
|
|
|
|||
|
|
@ -0,0 +1,73 @@
|
|||
using AyCode.Core.Enums;
|
||||
using AyCode.Core.Helpers;
|
||||
using AyCode.Core.Loggers;
|
||||
using AyCode.Entities.LogItems;
|
||||
using AyCode.Services.Loggers;
|
||||
using AyCode.Services.SignalRs;
|
||||
using MessagePack;
|
||||
using Microsoft.AspNetCore.SignalR.Client;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using TIAMWebApp.Shared.Application.Models.ClientSide;
|
||||
using TIAMWebApp.Shared.Application.Utility;
|
||||
|
||||
namespace TIAMWebApp.Shared.Application.Services
|
||||
{
|
||||
public class DevAdminSignalClient(IEnumerable<IAcLogWriterClientBase> logWriters) : AcSignalRClientBase("DevAdminHub", logWriters);
|
||||
|
||||
public abstract class AcSignalRClientBase : IAcSignalRHubClient
|
||||
{
|
||||
protected readonly HubConnection HubConnection;
|
||||
protected readonly LoggerClient Logger;
|
||||
|
||||
protected AcSignalRClientBase(string hubName, IEnumerable<IAcLogWriterClientBase> logWriters)
|
||||
{
|
||||
Logger = new LoggerClient(GetType().Name, logWriters.ToArray());
|
||||
|
||||
HubConnection = new HubConnectionBuilder()
|
||||
.WithUrl($"{Setting.BaseUrl}/{hubName}")
|
||||
//.AddMessagePackProtocol(options => options.SerializerOptions = MessagePackSerializerOptions.Standard.WithSecurity(MessagePackSecurity.UntrustedData))
|
||||
.Build();
|
||||
|
||||
HubConnection.On<string, int, object?>("Post", Post);
|
||||
|
||||
HubConnection.StartAsync().Forget();
|
||||
}
|
||||
|
||||
public async Task StartConnection()
|
||||
{
|
||||
if (HubConnection.State == HubConnectionState.Disconnected)
|
||||
await HubConnection.StartAsync();
|
||||
|
||||
if (HubConnection.State != HubConnectionState.Connected)
|
||||
await TaskHelper.WaitToAsync(() => HubConnection.State == HubConnectionState.Connected, 3000, 100);
|
||||
}
|
||||
|
||||
public async Task StopConnection()
|
||||
{
|
||||
await HubConnection.StopAsync();
|
||||
await HubConnection.DisposeAsync();
|
||||
}
|
||||
|
||||
public virtual async Task Get(string user, int messageTag)
|
||||
{
|
||||
Logger.Info($"{nameof(user)}: {user}; {nameof(messageTag)}: {messageTag}");
|
||||
|
||||
await StartConnection();
|
||||
|
||||
await HubConnection.SendAsync("Get", "", SignalRTags.GetTransfersAsync);
|
||||
}
|
||||
|
||||
public virtual async Task Post(string user, int messageTag, object? message)
|
||||
{
|
||||
Logger.Info($"{nameof(user)}: {user}; {nameof(messageTag)}: {messageTag}");
|
||||
|
||||
if (messageTag == SignalRTags.PostTransfersAsync)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
await StartConnection();
|
||||
await HubConnection.SendAsync("Post", SignalRTags.PostTransfersAsync, message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -17,7 +17,7 @@ namespace TIAMWebApp.Shared.Application.Services
|
|||
public async Task StartConnection(string userName)
|
||||
{
|
||||
_hubConnection = new HubConnectionBuilder()
|
||||
.WithUrl($"{Setting.BaseUrl}/myhub")
|
||||
.WithUrl($"{Setting.BaseUrl}/TiamChatHub")
|
||||
.Build();
|
||||
|
||||
_hubConnection.On<string, string>("ReceiveMessage", (user, message) =>
|
||||
|
|
|
|||
|
|
@ -23,8 +23,8 @@
|
|||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="8.0.5" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Http.Features" Version="5.0.17" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="8.0.5" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="8.0.5" />
|
||||
<PackageReference Include="Microsoft.JSInterop" Version="8.0.5" />
|
||||
<PackageReference Include="SkiaSharp" Version="2.88.8" />
|
||||
<PackageReference Include="SkiaSharp.Views.Desktop.Common" Version="2.88.8" />
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ using TIAMWebApp.Shared.Application.Models;
|
|||
using System.Net.Http.Json;
|
||||
using AyCode.Core.Helpers;
|
||||
using AyCode.Core.Loggers;
|
||||
using AyCode.Entities.LogItems;
|
||||
|
||||
namespace TIAMWebApp.Shared.Application.Utility;
|
||||
|
||||
|
|
|
|||
|
|
@ -5,14 +5,30 @@ using TIAM.Core.Loggers;
|
|||
|
||||
namespace TIAMWebApp.Shared.Application.Utility;
|
||||
|
||||
public class LoggerClient<TCategory> : Logger, ILogger<TCategory>
|
||||
public class LoggerClient : Logger, ILogger
|
||||
{
|
||||
public LoggerClient() : this(null)
|
||||
{
|
||||
}
|
||||
|
||||
public LoggerClient(string? categoryName) : base(AppType.Web, LogLevel.Detail, categoryName)
|
||||
{ }
|
||||
|
||||
public LoggerClient(string? categoryName, params IAcLogWriterBase[] logWriters) : base(AppType.Web, LogLevel.Detail, categoryName, logWriters)
|
||||
{ }
|
||||
|
||||
public LoggerClient(AppType appType, LogLevel logLevel, string? categoryName, params IAcLogWriterBase[] logWriters) : base(appType, logLevel, categoryName, logWriters)
|
||||
{ }
|
||||
}
|
||||
|
||||
public class LoggerClient<TCategory> : LoggerClient, ILogger<TCategory>
|
||||
{
|
||||
public LoggerClient() : base(AppType.Web, LogLevel.Detail, typeof(TCategory).Name)
|
||||
{ }
|
||||
|
||||
public LoggerClient(params IAcLogWriterClientBase[] logWriters) : base(AppType.Web, LogLevel.Detail, typeof(TCategory).Name, logWriters)
|
||||
{ }
|
||||
|
||||
|
||||
public LoggerClient(AppType appType, LogLevel logLevel, params IAcLogWriterClientBase[] logWriters) : base(appType, logLevel, typeof(TCategory).Name, logWriters)
|
||||
{ }
|
||||
}
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
using AyCode.Core.Enums;
|
||||
using AyCode.Core.Helpers;
|
||||
using AyCode.Core.Loggers;
|
||||
using AyCode.Entities;
|
||||
using AyCode.Entities.LogItems;
|
||||
using AyCode.Services.Loggers;
|
||||
using MessagePack;
|
||||
using Microsoft.AspNetCore.SignalR.Client;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Options;
|
||||
using TIAMWebApp.Shared.Application.Models.ClientSide;
|
||||
|
||||
namespace TIAMWebApp.Shared.Application.Utility
|
||||
{
|
||||
public class SignaRClientLogItemWriter : AcLogItemWriterBase<AcLogItemClient>, IAcLogWriterClientBase
|
||||
{
|
||||
private readonly HubConnection _hubConnection = new HubConnectionBuilder()
|
||||
.WithUrl($"{Setting.BaseUrl}/TiamLoggerHub")
|
||||
.AddMessagePackProtocol(options => options.SerializerOptions = MessagePackSerializerOptions.Standard.WithSecurity(MessagePackSecurity.UntrustedData))
|
||||
.Build();
|
||||
|
||||
public SignaRClientLogItemWriter() : base(AppType.Web, LogLevel.Detail)
|
||||
{
|
||||
_hubConnection.StartAsync().Forget();
|
||||
}
|
||||
|
||||
public async Task StartConnection()
|
||||
{
|
||||
if (_hubConnection.State == HubConnectionState.Disconnected)
|
||||
await _hubConnection.StartAsync();
|
||||
|
||||
if (_hubConnection.State != HubConnectionState.Connected)
|
||||
await TaskHelper.WaitToAsync(() => _hubConnection.State == HubConnectionState.Connected, 3000, 100);
|
||||
}
|
||||
|
||||
public async Task StopConnection()
|
||||
{
|
||||
await _hubConnection.StopAsync();
|
||||
await _hubConnection.DisposeAsync();
|
||||
}
|
||||
|
||||
public override void Write(AppType appType, LogLevel logLevel, string? logText, string? callerMemberName, string? categoryName, string? errorType, string? exMessage)
|
||||
=> WriteLogItem(CreateLogItem(DateTime.UtcNow, appType, Environment.CurrentManagedThreadId, logLevel, logText, callerMemberName, categoryName, errorType, exMessage));
|
||||
|
||||
protected override async void WriteLogItemCallback(AcLogItemClient logItem)
|
||||
{
|
||||
//Ez fontos, mert a signalR nem küldi a DateTime.Kind-ot! A szeró oldalon kap egy utc DateTime-ot, ami a kliens lokális DateTime-ját tartalmazza! - J.
|
||||
logItem.TimeStampUtc = logItem.TimeStampUtc.ToUniversalTime();
|
||||
|
||||
await StartConnection();
|
||||
|
||||
if (_hubConnection.State != HubConnectionState.Connected)
|
||||
return;
|
||||
|
||||
//var refreshToken = Setting.UserBasicDetails?.RefreshToken ?? Guid.NewGuid().ToString("N");
|
||||
_hubConnection.SendAsync("AddLogItem", /*refreshToken,*/ logItem).Forget();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue