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 logger) : Hub where TLogger : IAcLoggerBase { private TLogger _logger = logger; // Kapcsolat-életciklus markerek: enélkül a szerver-konzolból nem látszik, hogy a kliens-log csatorna // egyáltalán felépült-e (a néma loggerHub a "sosem csatlakozott" és a "csatlakozott, de nem küld" esetben ugyanúgy néz ki). public override async Task OnConnectedAsync() { _logger.Info($"Logger client connected; ConnectionId: {Context.ConnectionId}"); await base.OnConnectedAsync(); } public override async Task OnDisconnectedAsync(Exception? exception) { _logger.Info($"Logger client disconnected; ConnectionId: {Context.ConnectionId}{(exception == null ? string.Empty : $"; ex: {exception.GetType().Name}: {exception.Message}")}"); await base.OnDisconnectedAsync(exception); } public void AddLogItem(AcLogItem? logItem) { try { if (logItem == null) { _logger.Error("AddLogItem; LogItem == null"); //_logger.Writer().Detail(""); return; } //logItem.LogHeaderId = ??? logItem.TimeStampUtc = DateTime.UtcNow; _logger.Write(logItem); //_logger.Writer()?.Write(logItem.AppType, logItem.LogLevel, logItem.Text, logItem.CallerName, logItem.CategoryName, logItem.ErrorType, logItem.Exception); //_logger.Writer().WriteLogItemAsync(logItem); } catch (Exception ex) { Console.WriteLine($@"ERROR!!! {nameof(AcLoggerSignalRHub)}->AddLogItem; ex: {ex.Message}{AcEnv.NL}{AcEnv.NL}{ex}"); } } }