Compare commits
2 Commits
2edc099017
...
9673b629c6
| Author | SHA1 | Date |
|---|---|---|
|
|
9673b629c6 | |
|
|
77a6f26a5c |
|
|
@ -0,0 +1,4 @@
|
|||
namespace AyCode.Core.Loggers;
|
||||
|
||||
public interface IAcLogWriterClientBase : IAcLogWriterBase
|
||||
{}
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
using AyCode.Core.Consts;
|
||||
using AyCode.Core.Loggers;
|
||||
using AyCode.Entities.Server.LogItems;
|
||||
using Castle.Core.Logging;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
|
||||
namespace AyCode.Services.Server.SignalRs;
|
||||
|
||||
|
||||
public class AcLoggerSignalRHub<TLogger>(TLogger logger) : Hub where TLogger : IAcLoggerBase
|
||||
{
|
||||
private TLogger _logger = logger;
|
||||
|
||||
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(AcLoggerSignalRHub<TLogger>)}->AddLogItem; ex: {ex.Message}{AcEnv.NL}{AcEnv.NL}{ex}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.8" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="9.0.8" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="9.0.8" />
|
||||
</ItemGroup>
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,46 @@
|
|||
using AyCode.Core.Enums;
|
||||
using AyCode.Core.Loggers;
|
||||
using Microsoft.JSInterop;
|
||||
|
||||
namespace AyCode.Services.Loggers;
|
||||
|
||||
//public interface IBrowserConsoleLogWriter : IAcLogWriterBase
|
||||
//{ }
|
||||
|
||||
//public abstract class LogWriterClient : AcTextLogWriterBase
|
||||
//{
|
||||
// protected LogWriterClient(IJSRuntime jsRuntime) : base(AppType.Web, LogLevel.Debug)
|
||||
// { }
|
||||
//}
|
||||
|
||||
public class AcBrowserConsoleLogWriter : AcTextLogWriterBase, IAcLogWriterClientBase
|
||||
{
|
||||
protected readonly IJSRuntime JsRuntime;
|
||||
|
||||
protected readonly Dictionary<LogLevel, string> InvokeConsoleNames = new()
|
||||
{
|
||||
[LogLevel.Detail] = "console.info", //trace
|
||||
[LogLevel.Trace] = "console.info",
|
||||
[LogLevel.Debug] = "console.info",
|
||||
[LogLevel.Info] = "console.info",
|
||||
[LogLevel.Suggest] = "console.info",
|
||||
[LogLevel.Warning] = "console.warn",
|
||||
[LogLevel.Error] = "console.error"
|
||||
};
|
||||
|
||||
protected AcBrowserConsoleLogWriter(IJSRuntime jsRuntime, AppType appType = AppType.Web, LogLevel logLevel = LogLevel.Info) : base(appType, logLevel)
|
||||
{
|
||||
JsRuntime = jsRuntime;
|
||||
}
|
||||
|
||||
protected override void WriteText(string? logText, LogLevel logLevel)
|
||||
{
|
||||
JsRuntime.InvokeVoidAsync(InvokeConsoleNames[logLevel], logText); //logText?.Replace(Environment.NewLine, "<br />"));
|
||||
}
|
||||
|
||||
//public void Info(string message)
|
||||
//{
|
||||
// ((AcLogWriterBase)this).Info(message);
|
||||
// //jsRuntime.InvokeVoidAsync("console.log", logText);
|
||||
//}
|
||||
}
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
using AyCode.Core.Enums;
|
||||
using AyCode.Core.Helpers;
|
||||
using AyCode.Core.Loggers;
|
||||
using AyCode.Entities;
|
||||
using AyCode.Entities.LogItems;
|
||||
using Microsoft.AspNetCore.SignalR.Client;
|
||||
|
||||
namespace AyCode.Services.Loggers
|
||||
{
|
||||
public class AcSignaRClientLogItemWriter : AcLogItemWriterBase<AcLogItemClient>, IAcLogWriterClientBase
|
||||
{
|
||||
private readonly HubConnection _hubConnection;
|
||||
|
||||
public AcSignaRClientLogItemWriter(string fullHubName, AppType appType = AppType.Web, LogLevel logLevel = LogLevel.Detail, string? categoryName = null) : base(appType, logLevel, categoryName)
|
||||
{
|
||||
_hubConnection = new HubConnectionBuilder()
|
||||
.WithUrl(fullHubName)
|
||||
//.WithAutomaticReconnect()
|
||||
//.AddMessagePackProtocol(options => options.SerializerOptions = MessagePackSerializerOptions.Standard.WithSecurity(MessagePackSecurity.UntrustedData))
|
||||
.Build();
|
||||
|
||||
_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, 10000, 10, 25);
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
using AyCode.Core.Loggers;
|
||||
|
||||
namespace AyCode.Services.Loggers;
|
||||
|
||||
public interface IAcLogWriterClientBase : IAcLogWriterBase
|
||||
{}
|
||||
|
|
@ -4,11 +4,10 @@ using AyCode.Core.Extensions;
|
|||
using AyCode.Core.Helpers;
|
||||
using AyCode.Core.Loggers;
|
||||
using AyCode.Interfaces.Entities;
|
||||
using AyCode.Services.SignalRs;
|
||||
using MessagePack.Resolvers;
|
||||
using Microsoft.AspNetCore.SignalR.Client;
|
||||
|
||||
namespace AyCode.Services.Server.SignalRs
|
||||
namespace AyCode.Services.SignalRs
|
||||
{
|
||||
public abstract class AcSignalRClientBase : IAcSignalRHubClient
|
||||
{
|
||||
|
|
@ -26,9 +25,11 @@ namespace AyCode.Services.Server.SignalRs
|
|||
protected AcSignalRClientBase(string fullHubName, AcLoggerBase logger)
|
||||
{
|
||||
Logger = logger;
|
||||
Logger.Detail(fullHubName);
|
||||
|
||||
HubConnection = new HubConnectionBuilder()
|
||||
.WithUrl(fullHubName)
|
||||
//.WithAutomaticReconnect()
|
||||
//.AddMessagePackProtocol(options => {
|
||||
// options.SerializerOptions = MessagePackSerializerOptions.Standard
|
||||
// .WithResolver(MessagePack.Resolvers.StandardResolver.Instance)
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
namespace AyCode.Services.Server.SignalRs;
|
||||
namespace AyCode.Services.SignalRs;
|
||||
|
||||
public class SignalRRequestModel
|
||||
{
|
||||
Loading…
Reference in New Issue