public void Log <TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter) { try { var messageLogEntity = new MessageLogEntity { Id = Guid.NewGuid(), Timestamp = TimeZoneExtensions.GetCurrentTime(), TypeId = _logLevelMapper.Map(logLevel), Message = $"{formatter(state, exception)}", Exception = exception?.ToString(), InnerException = exception?.InnerException?.ToString(), StackTrace = exception?.StackTrace, Source = exception?.Source, CreatedOn = TimeZoneExtensions.GetCurrentTime(), CreatedBy = _createdBy }; Task.Run(() => { _tableStorageRepository.InsertAsync(messageLogEntity); }).Wait(); } catch (Exception e) { Console.WriteLine(e); // do nothing } }
private void Save(IEvent @event, DateTime enqueueTime) { var message = new MessageLogEntity { Payload = serializer.Serialize(@event), PartitionKey = enqueueTime.ToString("yyyMM"), RowKey = enqueueTime.Ticks.ToString("D20") + "_" + @event.GetHashCode(), MessageId = Guid.NewGuid().ToString(), CorrelationId = Guid.NewGuid().ToString() }; foreach (var metadata in this.metadata.GetMetadata(@event)) { message.GetType().GetProperty(metadata.Key).SetValue(message, metadata.Value, null); } writer.Save(message); }
public void GeneratePastEventLogMessagesForConferenceManagement( CloudTableClient messageLogClient, string messageLogName, string conferenceManagementConnectionString, IMetadataProvider metadataProvider, ITextSerializer serializer) { retryPolicy.ExecuteAction(() => messageLogClient.CreateTableIfNotExist(messageLogName)); // set the creation date to just before releasing V1 (previous month). var eventCreationDate = new DateTime(2012, 04, 01, 0, 0, 0, DateTimeKind.Utc); var generatedEvents = this.GenerateMissedConferenceManagementIntegrationEvents(conferenceManagementConnectionString); foreach (var evt in generatedEvents) { // generate events in ascending order. If there is a conflict when saving (currently silently swallowed by AzureEventLogWriter), // then the migration process is being run for the second time, which is wrong. // TODO: what happens if the process crashes middleway. eventCreationDate = eventCreationDate.AddSeconds(1); var metadata = metadataProvider.GetMetadata(evt); var entry = new MessageLogEntity { PartitionKey = eventCreationDate.ToString("yyyMM"), // could have a prefix instead of suffix to be able to search RowKey = eventCreationDate.Ticks.ToString("D20") + "_Generated", CreationDate = eventCreationDate.ToString("o"), MessageId = null, CorrelationId = null, SourceType = null, SourceId = evt.SourceId.ToString(), AssemblyName = metadata[StandardMetadata.AssemblyName], FullName = metadata[StandardMetadata.FullName], Namespace = metadata[StandardMetadata.Namespace], TypeName = metadata[StandardMetadata.TypeName], Kind = StandardMetadata.EventKind, Payload = serializer.Serialize(evt), }; var context = messageLogClient.GetDataServiceContext(); context.AddObject(messageLogName, entry); retryPolicy.ExecuteAction(() => context.SaveChanges()); } }
public void Save(IEvent @event) { var metadata = this.metadataProvider.GetMetadata(@event); var msgLog = new MessageLogEntity { Id = Guid.NewGuid(), SourceId = @event.SourceId.ToString(), Kind = metadata.TryGetValue(StandardMetadata.Kind), AssemblyName = metadata.TryGetValue(StandardMetadata.AssemblyName), FullName = metadata.TryGetValue(StandardMetadata.FullName), Namespace = metadata.TryGetValue(StandardMetadata.Namespace), TypeName = metadata.TryGetValue(StandardMetadata.TypeName), SourceType = metadata.TryGetValue(StandardMetadata.SourceType) as string, CreationDate = DateTime.UtcNow.ToString("o"), Payload = serializer.Serialize <string>(@event), }; using (var context = new MessageLogDbContext()) { context.Set <MessageLogEntity>().Add(msgLog); context.SaveChanges(); } }