public static Log GetLog(Guid componentId, SendLogData message) { if (message.Date == null) { message.Date = DateTime.Now; } if (message.Level == null) { message.Level = LogLevel.Info; } var log = new Log() { Id = Guid.NewGuid(), ComponentId = componentId, Date = DateTimeHelper.TrimMs(message.Date.Value), // Важно - убираем мс из даты, иначе будет некорректно работать просмотр лога Order = message.Order ?? 0, Level = message.Level.Value, Message = message.Message, Context = message.Context, ParametersCount = 0, Parameters = GetLogProperies(message.Properties) }; if (message.Properties != null) { log.ParametersCount = message.Properties.Count; } return(log); }
public SendLogResponse SendLog(Guid accountId, SendLogData data) { var request = GetRequest <SendLogRequest>(accountId); request.Data = data; var dispatcher = DispatcherHelper.GetDispatcherService(); return(dispatcher.SendLog(request)); }
public void SaveLogMessage(Guid accountId, Guid componentId, SendLogData message) { // Проверка на наличие необходимых параметров if (message == null) { throw new ParameterRequiredException("Request.Message"); } if (message.Message == null) { throw new ParameterRequiredException("Request.Message.Message"); //todo надо переименовать } if (message.Message.Length > 4000) { message.Message = message.Message.Substring(0, 4000); } if (message.Context != null && message.Context.Length > 255) { message.Context = message.Context.Substring(0, 255); } // Проверим лимиты var accountDbContext = Context.GetAccountDbContext(accountId); var checker = AccountLimitsCheckerManager.GetCheckerForAccount(accountId); var size = message.GetSize(); checker.CheckLogSizePerDay(accountDbContext, size); // Проверим лимит размера хранилища checker.CheckStorageSize(accountDbContext, size); // Получим компонент var componentService = Context.ComponentService; var component = componentService.GetComponentById(accountId, componentId); var logRepository = Context.DbContext.GetAccountDbContext(accountId).GetLogRepository(); var log = ApiConverter.GetLog(component.Id, message); logRepository.Add(log); Context.SaveChanges(); checker.AddLogSizePerDay(accountDbContext, size); }
public static SendLogDto GetSendLogDto(SendLogData data) { if (data == null) { return(null); } return(new SendLogDto() { ComponentId = data.ComponentId, Context = data.Context, Date = data.Date, Order = data.Order, Level = data.Level, Message = data.Message, Properties = GetExtentionPropertyDtos(data.Properties) }); }
public void SendLogTest() { var account = TestHelper.GetTestAccount(); var client = account.GetClient(); var root = client.GetRootComponentControl(); var levels = new[] { LogLevel.Debug, LogLevel.Trace, LogLevel.Info, LogLevel.Warning, LogLevel.Error, LogLevel.Fatal }; var date = RandomHelper.GetRandomDate( new DateTime(1980, 1, 1), new DateTime(2014, 1, 1)); date = TestHelper.GetRoundDateTime(date); // отправляем сообщения каждого уровня var logDate = date; var messages = new List <SendLogData>(); foreach (var level in levels) { var message = new SendLogData() { ComponentId = root.Info.Id, Date = logDate, Message = "test message " + level, Level = level, Context = Guid.NewGuid().ToString() }; messages.Add(message); TestHelper.InitRandomProperties(message.Properties); var response = client.ApiService.SendLog(message); Assert.True(response.Success); logDate = logDate.AddSeconds(1); } // проверим, что все сообщения записались var findMessage = new GetLogsFilter() { From = date, To = date.AddSeconds(levels.Length), Levels = levels.ToList(), MaxCount = levels.Length }; var findLogsResponse = root.GetLogs(findMessage); Assert.True(findLogsResponse.Success); Assert.Equal(levels.Length, findLogsResponse.Data.Count); logDate = date; foreach (var level in levels) { var logRow = findLogsResponse.Data.FirstOrDefault(x => x.Level == level); var message = messages.First(x => x.Level == level); Assert.NotNull(logRow); Assert.Equal("test message " + level, logRow.Message); Assert.Equal(logDate, logRow.Date); Assert.Equal(message.Context, logRow.Context); Assert.True(logRow.Properties.Count > 0); TestHelper.CheckExtentionProperties(logRow.Properties, message.Properties); logDate = logDate.AddSeconds(1); } }